Является ли 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:)