LINQ
Last updated
Last updated
Language-Integrated Query представляет простой и удобный язык запросов к источнику данных. В качестве источника данных может выступать объект, реализующий интерфейс IEnumerable (например, стандартные коллекции, массивы), набор данных DataSet, документ XML и т.д. Но вне зависимости от типа источника LINQ позволяет применить ко всем один и тот же подход для выборки данных. LINQ не используется для преобразования данных, только для их выборки в нужной форме.
Для начала надо прописать using System.Linq;
LINQ можно использовать двумя методами: с помощью специального языка запросов или с помощью методов расширения для коллекций.
Я рекомендую использовать методы расширения, потому что:
ЯЗ не вписывается в стандартный синтаксис шарпа, поэтому его будет сложно комбинировать с другими методами, если надо будет
IDE не показывает подсказки, какие аргументы куда вписывать и какие команду существуют
Привычнее видеть цепочные методы, чем разбираться что происходит в написанном запросе
Запросы LINQ возвращают результат в виде IEnumerable вне зависимости от того, какой тип коллекции являлся источником данных. IEnumerable возможно перебрать в foreach, однако у него нет индексации, и если вам она нужна, то можно преобразовать в лист или массив, или даже в словарь.
Производительность LINQ почти всегда меньше, чем обычные алгоритмы, которые могут выполнить аналогичную операцию, поэтому LINQ стоит применять только когда этот код будет выполнятся не часто. В Update/FixedUpdate или циклах лучше написать свои алгоритмы выборки данных, так станет возможным контролировать каждый шаг этого алгоритма с целью его оптимизации.