LINQ

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅

Language-Integrated Query прСдставляСт простой ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ язык запросов ΠΊ источнику Π΄Π°Π½Π½Ρ‹Ρ…. Π’ качСствС источника Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс IEnumerable (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, стандартныС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, массивы), Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… DataSet, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ XML ΠΈ Ρ‚.Π΄. Но Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° источника LINQ позволяСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎ всСм ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ для Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. LINQ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для прСобразования Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΈΡ… Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π² Π½ΡƒΠΆΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅.

ИспользованиС

Для Π½Π°Ρ‡Π°Π»Π° Π½Π°Π΄ΠΎ ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ using System.Linq;

LINQ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ двумя ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ: с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ языка запросов ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ.

Π― Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ:

  1. Π―Π— Π½Π΅ вписываСтся Π² стандартный синтаксис ΡˆΠ°Ρ€ΠΏΠ°, поэтому Π΅Π³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ слоТно ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, Ссли Π½Π°Π΄ΠΎ Π±ΡƒΠ΄Π΅Ρ‚

  2. IDE Π½Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ подсказки, ΠΊΠ°ΠΊΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΡƒΠ΄Π° Π²ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚

  3. ΠŸΡ€ΠΈΠ²Ρ‹Ρ‡Π½Π΅Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ†Π΅ΠΏΠΎΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‡Π΅ΠΌ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Ρ‡Ρ‚ΠΎ происходит Π² написанном запросС

Запросы LINQ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Π²ΠΈΠ΄Π΅ IEnumerable Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ являлся источником Π΄Π°Π½Π½Ρ‹Ρ…. IEnumerable Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ Π² foreach, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρƒ Π½Π΅Π³ΠΎ Π½Π΅Ρ‚ индСксации, ΠΈ Ссли Π²Π°ΠΌ ΠΎΠ½Π° Π½ΡƒΠΆΠ½Π°, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² лист ΠΈΠ»ΠΈ массив, ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π² ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ.

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ LINQ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда мСньшС, Ρ‡Π΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, поэтому LINQ стоит ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ³Π΄Π° этот ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ выполнятся Π½Π΅ часто. Π’ Update/FixedUpdate ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ»Π°Ρ… Π»ΡƒΡ‡ΡˆΠ΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свои Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ станСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ шаг этого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° с Ρ†Π΅Π»ΡŒΡŽ Π΅Π³ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ.

Last updated