λ·λ·μ LINQ κΈ°λ₯μ μλ°μ€ν¬λ¦½νΈλ‘ μ΄μ©νκΈ°
LINQ (Language Integrated Query)λ λ·λ· κ°λ°μ κ°μ₯ κ°λ ₯ν κΈ°λ₯λ€ μ€μ νλμ΄λ€. LINQ-to-SQL, LINQ-to-XML, LINQ-to-OBJECT λ± κ±°μ λͺ¨λ μν©μμ LINQλ₯Ό μ¬μ©ν μ μλ€. LINQλ λ³΄ν΅ μλμ κ°μ ννλ‘ λ§μ΄ μ°μΈλ€.
var products = (from p in context.Products where p.ProductName.Contains("ABC") select p).ToList();
λλ
var products = context.Products .SingleOrDefault(p => p.ProductId == 123);
νμ§λ§ μ΄κ²μ κ°μ₯ ν° λ¨μ (?)μ΄λΌλ©΄, νλ‘ νΈμλμμ μ°μ΄λ μλ°μ€ν¬λ¦½νΈλ‘λ μ΄λ¬ν κΈ°λ₯μ μ¬μ©ν μ μλ€λ λ° μλ€. κ·Έλμ λνλ κ²μ΄ λ°λ‘ linq.jsμ΄λ€.
linq.js μκ°
μ΄ μλ°μ€ν¬λ¦½νΈ νλ μμμ μ¬μ©νλ©΄, LINQμμ μ 곡νλ λλΆλΆμ κΈ°λ₯λ€μ μλ°μ€ν¬λ¦½νΈ μμμλ κ±°μ λμΌν λ¬Έλ²μΌλ‘ μ¬μ©ν μ μλ€. λν, μ΄ linq.jsλ jQuery νλ¬κ·ΈμΈλ μ 곡νλ―λ‘, λλμ± νΈλ¦¬νκ² μΈ μ μλ€.
μ΄ linq.jsλ₯Ό μ¬μ©νκΈ° μν΄μλ μ°μ λΌμ΄λΈλ¬λ¦¬λ₯Ό λΆλ¬λ€μ¬μΌ νλ€. κΈ°μμ΄λ©΄ jQueryλ₯Ό νΈμΆν νμ μ΄ linq.jsλ₯Ό νΈμΆνλλ‘ νμ.
<script src="/path/to/linq.js"></script> <script src="/path/to/linq.jquery.js"></script>
μ΄λ κ² νΈμΆν΄ λμΌλ©΄ κ·Έλ₯ μ¬μ©μ΄ κ°λ₯νλ€. λλ΅μ μ¬μ© λ°©λ²μ μλμ κ°λ€.
var jsonArray = [ { "user": { "id": 100, "screen_name": "d_linq" }, "text": "to objects" }, { "user": { "id": 130, "screen_name": "c_bill" }, "text": "g" }, { "user": { "id": 155, "screen_name": "b_mskk" }, "text": "kabushiki kaisha" }, { "user": { "id": 301, "screen_name": "a_xbox" }, "text": "halo reach" } ]; // ["b_mskk:kabushiki kaisha", "c_bill:g", "d_linq:to objects"] var queryResult = Enumerable.From(jsonArray) .Where(function (x) { return x.user.id < 200 }) .OrderBy(function (x) { return x.user.screen_name }) .Select(function (x) { return x.user.screen_name + ':' + x.text }) .ToArray();
μ‘°κΈ λ νΈνκ² λλ€ ν¨μλ₯Ό μ΄μ©νλ€λ©΄ μλμ κ°μ΄ μ¬μ©ν μλ μλ€. μμ μλλ λμΌν κ²°κ³Όλ₯Ό κ°μ Έμ¨λ€.
// shortcut! string lambda selector var queryResult2 = Enumerable.From(jsonArray) .Where("$.user.id < 200") .OrderBy("$.user.screen_name") .Select("$.user.screen_name + ':' + $.text") .ToArray();
λ§μ°¬κ°μ§λ‘ jQuery νλ¬κ·ΈμΈμ μ¬μ©νλ€λ©΄ λμ± κ°κ²°ν ννμ μΈ μ μλ€.
// $.Enumerable: // μλΏ λ©μμ§λ‘ μ§μλ§ λ³΄μ¬μ€λ€. μ΄ λ€μ―λ². $.Enumerable.Range(1, 10).Where("$%2==0").ForEach("alert($)"); // TojQuery - Enumerable to jQuery // #select1 μ΄λΌκ³ νλ IDλ₯Ό κ°μ§ λλ‘λ€μ΄λ¦¬μ€νΈμ μ΅μ μ 1λΆν° 10κΉμ§ μΆκ°νλ€. $.Enumerable.Range(1, 10) .Select(function (i) { return $("<option>").text(i)[0] }) .TojQuery() .appendTo("#select1"); // toEnumerable - jQuery to Enumerable // 1λΆν° 10κΉμ§ μΆκ°ν κ°μ λͺ¨λ λνλ€. var sum = $("#select1").children() .toEnumerable() .Select("parseInt($.text())") .Sum(); // 55
μ΄λ κ² μ½κ² μ¬μ©μ΄ κ°λ₯νλ€. λ λ§μ λ νΌλ°μ€λ μ΄κ³³μμ νμΈν μ μλ€.
IE6 - 8 μμ linq.js μ¬μ©νκΈ° β es5-shim
λ¬Έμ λ μμλ IE6, IE7, IE8 μμ λ°μνλ€. κ·Έ μ΄μ λ κΈ°λ³Έμ μΈ μλ°μ€ν¬λ¦½νΈ μ²λ¦¬ μμ§μ λ²μ μΌλ‘, EcmaScript 5 λ₯Ό μ§μνμ§ μλ λΈλΌμ°μ μ΄κΈ° λλ¬Έμ΄λ€. μ¦, λ°°μ΄ μ²λ¦¬κ° μλΉν μ νμ μ΄λΌμ μ΄ linq.jsκ° μ λλ‘ λμνμ§ μλλ€.
νμ§λ§, μ΄λ΄ λ es5-shim μ΄λΌλ μλ°μ€ν¬λ¦½νΈλ₯Ό μΆκ°ν΄ μ£Όλ©΄ IE6-8 μμλ μ΄ linq.jsλ₯Ό μ¬μ©ν μ μλ€.
λ§μ½ html5shivλ₯Ό μ¬μ©νλ€λ©΄, λ°λ‘ λ°μ μ΄ es5-shim λΌμ΄λΈλ¬λ¦¬λ₯Ό μΆκ°νλλ‘ νμ. μλλΌλ©΄ modernizr λ°λ‘ λ°μ μΆκ°ν΄λ λλ€.
<script src="/path/to/es5-shim.min.js"></script>
λ¨μν μ΄λ κ² μΆκ°νλ κ² λ§μΌλ‘ linq.jsμ κΈ°λ₯λ€μ λͺ¨λ μ¬μ©ν μ μκ² λλ€.











