Является ли List.ForEach технически частью LINQ или нет?
В настоящее время LINQ является просто свободным и аморфным облаком концепций, обычно о доступе к данным, но также в сочетании с лямбда-выражениями, делегатами, анонимными функциями и методами расширения, это касается манипуляции с строками и коллекциями, поэтому я хочу закрепите его.
Когда я пишу следующий код, могу ли я сказать, что я использую LINQ или нет?
List<string> words = new List<string>() { "one", "two", "three" };
words.ForEach(word => Console.WriteLine(word.ToUpper()));
например. метод ForEach широко упоминается как "метод LINQ", но его дом находится в System.Collections.Generic.List, а не System.Linq.
Ответы
Ответ 1
Это не часть LINQ - она существовала в .NET 2.0, задолго до LINQ. Это LINQ-like, но я бы не сказал, что это часть LINQ.
С другой стороны, если вы реализуете собственный метод расширения IEnumerable<T>
ForEach
(например, в MoreLINQ), который можно рассматривать как нестандартный оператор LINQ...
Ответ 2
ForEach не LINQ, это просто метод, который принимает делегат. Был там с .NET 2.0.
Ответ 3
Linq означает "языковой интегрированный запрос". Чтобы действительно "использовать" linq, вам нужно построить что-то вроде этого:
var result = from word in words
where word.Length < 5
select word;
Тем не менее, система IEnumerable + ленивая оценка + выражение lamdba + замыкания, на которых зависит LINQ, достаточно значительна сама по себе, чтобы гарантировать ее собственное модное слово. Говорить, что вы можете использовать лямбда-выражения, на самом деле не разрезают его, imo. Дело в том, что этот образец. Вы можете использовать linq, но почему, когда это так же хорошо и намного короче:
var result = words.Where(w => w.Length < 5);
Ответ 4
Взятие делегата не делает его LINQ.
Foreach не является методом "LINQ", он не является членом Enumerable
или Queryable
, и для него нет синтаксиса понимания.
И, прежде всего, он изменяет источник (список), который не является чем-то LINQ to Objects.
Я бы сказал "Нет".
Ответ 5
В приведенном выше примере вы не используете LINQ. Метод ForEach - это просто хороший способ перебора элементов в вашем перечислимом типе данных без явного написания цикла.
Ответ 6
Если вы пытаетесь оправдать LINQ как ключевое слово resume, возможно, нет. Но эта функция была добавлена с остальной функциональностью Linq и находится в том же семействе функций, поэтому sortof:)