Простые запросы LINQ на IEnumerable<T>
в легком или тяжелом весе? Как они сравниваются с написанием стрелок for
или foreach
вручную? Есть ли общее правило, когда следует предпочитать LINQ или ручной поиск?
Например:
var lowNums =
from n in numbers
where n < 5
select n;
По сравнению с:
List<int> lowNums = new List<int>();
foreach (int n in numbers)
{
if (n < 5)
{
lowNums.Add(n);
}
}
Я разговаривал с коллегой о LINQ, и он несколько раз размышлял об использовании этого. Он предположил, что "за кулисами" может быть много, чтобы поддержать все, что может сделать LINQ.
Есть ли существенная разница в производительности между приведенными выше примерами? Есть ли хорошие ресурсы, которые говорят о производительности LINQ для коллекций? Простой поиск Google linq performance показал некоторые, казалось бы, устаревшие статьи.