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