Looking for .net Answers? Try Ask4KnowledgeBase
Looking for .net Keywords? Try Ask4Keywords

.NET FrameworkLINQ


Вступление

LINQ (Language Integrated Query) - это выражение, которое извлекает данные из источника данных. LINQ упрощает эту ситуацию, предлагая согласованную модель для работы с данными в различных источниках и форматах данных. В запросе LINQ вы всегда работаете с объектами. Вы используете одни и те же базовые шаблоны кодирования для запроса и преобразования данных в документы XML, базы данных SQL, наборы данных ADO.NET, коллекции .NET и любой другой формат, доступный для провайдера. LINQ может использоваться в C # и VB.

Синтаксис

  • public static TSource Aggregate <TSource> (этот источник IEnumerable <TSource>, Func <TSource, TSource, TSource> func)
  • public static TAccumulate Aggregate <TSource, TAccumulate> (этот источник IEnumerable <TSource>, TAccumulate seed, Func <TAccumulate, TSource, TAccumulate> func)
  • public static TResult Aggregate <TSource, TAccumulate, TResult> (этот источник IEnumerable <TSource>, TAccumulate seed, Func <TAccumulate, TSource, TAccumulate> func, Func <TAccumulate, TResult> resultSelector)
  • public static Boolean Все <TSource> (этот источник IEnumerable <TSource>, предикат Func <TSource, Boolean>)
  • public static Boolean Любой <TSource> (этот источник IEnumerable <TSource>)
  • public static Boolean Любой <TSource> (этот источник IEnumerable <TSource>, предикат Func <TSource, Boolean>)
  • public static IEnumerable <TSource> AsEnumerable <TSource> (этот источник IEnumerable <TSource>)
  • public static Decimal Average (этот IEnumerable <десятичный> источник)
  • public static Double Average (этот источник IEnumerable <Double>)
  • public static Double Average (этот источник IEnumerable <Int32>)
  • public static Double Average (этот источник IEnumerable <Int64>)
  • public static Nullable <Decimal> Average (этот IEnumerable <Nullable <Decimal >> source)
  • public static Nullable <Double> Среднее (этот IEnumerable <Nullable <Double >> source)
  • public static Nullable <Double> Средний (этот IEnumerable <Nullable <Int32 >> source)
  • public static Nullable <Double> Средний (этот IEnumerable <Nullable <Int64 >> source)
  • public static Nullable <Single> Average (этот IEnumerable <Nullable <Single >> source)
  • public static Single Average (этот IEnumerable <Single> source)
  • public static Decimal Average <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, Decimal>)
  • public static Double Average <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, Double>)
  • public static Double Average <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, Int32>)
  • public static Double Average <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, Int64>)
  • public static Nullable <Decimal> Average <TSource> (этот источник IEnumerable <TSource>, Func <TSource, Nullable <Decimal >> selector)
  • public static Nullable <Double> Average <TSource> (этот источник IEnumerable <TSource>, Func <TSource, Nullable <Double >> selector)
  • public static Nullable <Double> Средний <TSource> (этот источник IEnumerable <TSource>, Func <TSource, Nullable <Int32 >> selector)
  • public static Nullable <Double> Average <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, Nullable <Int64 >>)
  • public static Nullable <Single> Average <TSource> (этот источник IEnumerable <TSource>, Func <TSource, Nullable <Single >> selector))
  • public static Single Average <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, Single>)
  • public static IEnumerable <TResult> Cast <TResult> (этот источник IEnumerable)
  • public static IEnumerable <TSource> Concat <TSource> (этот IEnumerable <TSource> сначала, IEnumerable <TSource> второй)
  • public static Boolean Содержит <TSource> (этот источник IEnumerable <TSource>, значение TSource)
  • public static Boolean Содержит <TSource> (этот источник IEnumerable <TSource>, значение TSource, сравнитель IEqualityComparer <TSource>)
  • public static Int32 Count <TSource> (этот источник IEnumerable <TSource>)
  • public static Int32 Count <TSource> (этот источник IEnumerable <TSource>, предикат Func <TSource, Boolean>)
  • public static IEnumerable <TSource> DefaultIfEmpty <TSource> (этот источник IEnumerable <TSource>)
  • public static IEnumerable <TSource> DefaultIfEmpty <TSource> (этот источник IEnumerable <TSource>, TSource defaultValue)
  • public static IEnumerable <TSource> Distinct <TSource> (этот источник IEnumerable <TSource>)
  • public static IEnumerable <TSource> Distinct <TSource> (этот источник IEnumerable <TSource>, сравнительный файл IEqualityComparer <TSource>)
  • public static TSource ElementAt <TSource> (этот источник IEnumerable <TSource>, индекс Int32)
  • public static TSource ElementAtOrDefault <TSource> (этот источник IEnumerable <TSource>, индекс Int32)
  • public static IEnumerable <TResult> Пусто <TResult> ()
  • public static IEnumerable <TSource> За исключением <TSource> (этот IEnumerable <TSource> сначала, IEnumerable <TSource> второй)
  • public static IEnumerable <TSource> За исключением <TSource> (этот IEnumerable <TSource> сначала, IEnumerable <TSource> второй, IEqualityComparer <TSource> Comparer)
  • public static TSource Первый <TSource> (этот источник IEnumerable <TSource>)
  • public static TSource First <TSource> (этот источник IEnumerable <TSource>, предикат Func <TSource, Boolean>)
  • public static TSource FirstOrDefault <TSource> (этот источник IEnumerable <TSource>)
  • public static TSource FirstOrDefault <TSource> (этот источник IEnumerable <TSource>, предикат Func <TSource, Boolean>)
  • public static IEnumerable <IGrouping <TKey, TSource >> GroupBy <TSource, TKey> (этот источник IEnumerable <TSource>, Func <TSource, TKey> keySelector)
  • public static IEnumerable <IGrouping <TKey, TSource >> GroupBy <TSource, TKey> (этот источник IEnumerable <TSource>, Func <TSource, TKey> keySelector, IEqualityComparer <TKey> Comparer)
  • public static IEnumerable <IGrouping <TKey, TElement >> GroupBy <TSource, TKey, TElement> (этот источник IEnumerable <TSource>, Func <TSource, TKey> keySelector, Func <TSource, TElement> elementSelector)
  • публичный статический IEnumerable <IGrouping <TKey, TElement >> GroupBy <TSource, TKey, TElement> (этот источник IEnumerable <TSource>, Func <TSource, TKey> keySelector, Func <TSource, TElement> elementSelector, IEqualityComparer <TKey> Comparer)
  • public static IEnumerable <TResult> GroupBy <TSource, TKey, TResult> (этот источник IEnumerable <TSource>, Func <TSource, TKey> keySelector, Func <TKey, IEnumerable <TSource>, TResult> resultSelector)
  • public static IEnumerable <TResult> GroupBy <TSource, TKey, TResult> (этот источник IEnumerable <TSource>, Func <TSource, TKey> keySelector, Func <TKey, IEnumerable <TSource>, TResult> resultSelector, IEqualityComparer <TKey> Comparer)
  • публичный статический IEnumerable <TResult> GroupBy <TSource, TKey, TElement, TResult> (этот источник IEnumerable <TSource>, Func <TSource, TKey> keySelector, Func <TSource, TElement> elementSelector, Func <TKey, IEnumerable <TElement>, TResult > resultSelector)
  • публичный статический IEnumerable <TResult> GroupBy <TSource, TKey, TElement, TResult> (этот источник IEnumerable <TSource>, Func <TSource, TKey> keySelector, Func <TSource, TElement> elementSelector, Func <TKey, IEnumerable <TElement>, TResult > resultSelector, IEqualityComparer <TKey> Comparer)
  • публичный статический IEnumerable <TResult> GroupJoin <TOuter, TInner, TKey, TResult> (этот IEnumerable <TOuter> внешний, IEnumerable <TInner> внутренний, Func <TOuter, TKey> внешнийKeySelector, Func <TInner, TKey> innerKeySelector, Func <TOuter, IEnumerable <TInner>, TResult> resultSelector)
  • публичный статический IEnumerable <TResult> GroupJoin <TOuter, TInner, TKey, TResult> (этот IEnumerable <TOuter> внешний, IEnumerable <TInner> внутренний, Func <TOuter, TKey> внешнийKeySelector, Func <TInner, TKey> innerKeySelector, Func <TOuter, IEnumerable <TInner>, TResult> resultSelector, IEqualityComparer <TKey> Comparer)
  • public static IEnumerable <TSource> Intersect <TSource> (этот IEnumerable <TSource> сначала, IEnumerable <TSource> второй)
  • public static IEnumerable <TSource> Intersect <TSource> (этот IEnumerable <TSource> сначала, IEnumerable <TSource> второй, IEqualityComparer <TSource> Comparer)
  • публичный статический IEnumerable <TResult> Join <TOuter, TInner, TKey, TResult> (этот IEnumerable <TOuter> внешний, IEnumerable <TInner> внутренний, Func <TOuter, TKey> внешнийKeySelector, Func <TInner, TKey> innerKeySelector, Func <TOuter, TInner, TResult> resultSelector)
  • публичный статический IEnumerable <TResult> Join <TOuter, TInner, TKey, TResult> (этот IEnumerable <TOuter> внешний, IEnumerable <TInner> внутренний, Func <TOuter, TKey> внешнийKeySelector, Func <TInner, TKey> innerKeySelector, Func <TOuter, TInner, TResult> resultSelector, IEqualityComparer <TKey> Comparer)
  • public static TSource Last <TSource> (этот источник IEnumerable <TSource>)
  • public static TSource Last <TSource> (этот источник IEnumerable <TSource>, предикат Func <TSource, Boolean>)
  • public static TSource LastOrDefault <TSource> (этот источник IEnumerable <TSource>)
  • public static TSource LastOrDefault <TSource> (этот источник IEnumerable <TSource>, предикат Func <TSource, Boolean>)
  • public static Int64 LongCount <TSource> (этот источник IEnumerable <TSource>)
  • public static Int64 LongCount <TSource> (этот источник IEnumerable <TSource>, предикат Func <TSource, Boolean>)
  • public static Decimal Max (этот источник IEnumerable <Decimal>)
  • public static Double Max (этот источник IEnumerable <Double>)
  • public static Int32 Max (этот источник IEnumerable <Int32>)
  • public static Int64 Max (этот источник IEnumerable <Int64>)
  • public static Nullable <Decimal> Max (этот IEnumerable <Nullable <Decimal >> source)
  • public static Nullable <Double> Max (этот IEnumerable <Nullable <Double >> источник)
  • public static Nullable <Int32> Max (этот IEnumerable <Nullable <Int32 >> source)
  • public static Nullable <Int64> Max (этот IEnumerable <Nullable <Int64 >> источник)
  • public static Nullable <Single> Max (этот IEnumerable <Nullable <Single >> source)
  • public static Single Max (этот IEnumerable <Single> source)
  • public static TSource Max <TSource> (этот источник IEnumerable <TSource>)
  • public static Decimal Max <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, Decimal>)
  • public static Double Max <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, Double>)
  • public static Int32 Max <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, Int32>)
  • public static Int64 Max <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, Int64>)
  • public static Nullable <Decimal> Max <TSource> (этот источник IEnumerable <TSource>, Func <TSource, Nullable <Decimal >> selector)
  • public static Nullable <Double> Max <TSource> (этот источник IEnumerable <TSource>, Func <TSource, Nullable <Double >> selector)
  • public static Nullable <Int32> Max <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, Nullable <Int32 >>)
  • public static Nullable <Int64> Max <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, Nullable <Int64 >>)
  • public static Nullable <Single> Max <TSource> (этот источник IEnumerable <TSource>, Func <TSource, Nullable <Single >> selector))
  • public static Single Max <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, Single>)
  • public static TResult Max <TSource, TResult> (этот источник IEnumerable <TSource>, селектор Func <TSource, TResult>)
  • public static Decimal Min (этот IEnumerable <Decimal> source)
  • public static Double Min (этот источник IEnumerable <Double>)
  • public static Int32 Min (этот источник IEnumerable <Int32>)
  • public static Int64 Min (этот источник IEnumerable <Int64>)
  • public static Nullable <Decimal> Min (этот IEnumerable <Nullable <Decimal >> source)
  • public static Nullable <Double> Min (этот IEnumerable <Nullable <Double >> source)
  • public static Nullable <Int32> Min (этот IEnumerable <Nullable <Int32 >> source)
  • public static Nullable <Int64> Min (этот IEnumerable <Nullable <Int64 >> source)
  • public static Nullable <Single> Min (этот IEnumerable <Nullable <Single >> source)
  • public static Single Min (этот IEnumerable <Single> source)
  • public static TSource Min <TSource> (этот источник IEnumerable <TSource>)
  • public static Decimal Min <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, десятичный>)
  • public static Double Min <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, Double>)
  • public static Int32 Min <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, Int32>)
  • public static Int64 Min <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, Int64>)
  • public static Nullable <Decimal> Min <TSource> (этот источник IEnumerable <TSource>, Func <TSource, Nullable <Decimal >> selector)
  • public static Nullable <Double> Min <TSource> (этот источник IEnumerable <TSource>, Func <TSource, Nullable <Double >> selector)
  • public static Nullable <Int32> Min <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, Nullable <Int32 >>)
  • public static Nullable <Int64> Min <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, Nullable <Int64 >>)
  • public static Nullable <Single> Min <TSource> (этот источник IEnumerable <TSource>, Func <TSource, Nullable <Single >> selector))
  • public static Single Min <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, Single>)
  • public static TResult Min <TSource, TResult> (этот источник IEnumerable <TSource>, селектор Func <TSource, TResult>)
  • public static IEnumerable <TResult> OfType <TResult> (этот источник IEnumerable)
  • public static IOrderedEnumerable <TSource> OrderBy <TSource, TKey> (этот источник IEnumerable <TSource>, Func <TSource, TKey> keySelector)
  • public static IOrderedEnumerable <TSource> OrderBy <TSource, TKey> (этот источник IEnumerable <TSource>, Func <TSource, TKey> keySelector, IComparer <TKey> Comparer)
  • public static IOrderedEnumerable <TSource> OrderByDescending <TSource, TKey> (этот источник IEnumerable <TSource>, Func <TSource, TKey> keySelector)
  • public static IOrderedEnumerable <TSource> OrderByDescending <TSource, TKey> (этот источник IEnumerable <TSource>, Func <TSource, TKey> keySelector, IComparer <TKey> Comparer)
  • public static IEnumerable <Int32> Range (Int32 start, Int32 count)
  • public static IEnumerable <TResult> Repeat <TResult> (элемент TResult, число Int32)
  • public static IEnumerable <TSource> Обратный <TSource> (этот источник IEnumerable <TSource>)
  • public static IEnumerable <TResult> Выберите <TSource, TResult> (этот источник IEnumerable <TSource>, селектор Func <TSource, TResult>)
  • public static IEnumerable <TResult> Выберите <TSource, TResult> (этот источник IEnumerable <TSource>, селектор Func <TSource, Int32, TResult>)
  • public static IEnumerable <TResult> SelectMany <TSource, TResult> (этот источник IEnumerable <TSource>, селектор Func <TSource, IEnumerable <TResult >>)
  • public static IEnumerable <TResult> SelectMany <TSource, TResult> (этот источник IEnumerable <TSource>, Func <TSource, Int32, IEnumerable <селектор TResult >>)
  • public static IEnumerable <TResult> SelectMany <TSource, TCollection, TResult> (этот источник IEnumerable <TSource>, Func <TSource, IEnumerable <TCollection >> collectionSelector, Func <TSource, TCollection, TResult> resultSelector)
  • public static IEnumerable <TResult> SelectMany <TSource, TCollection, TResult> (этот источник IEnumerable <TSource>, Func <TSource, Int32, IEnumerable <TCollection >> collectionSelector, Func <TSource, TCollection, TResult> resultSelector)
  • public static Boolean SequenceEqual <TSource> (этот IEnumerable <TSource> сначала, IEnumerable <TSource> второй)
  • public static Boolean SequenceEqual <TSource> (этот IEnumerable <TSource> сначала, IEnumerable <TSource> второй, IEqualityComparer <TSource> Comparer)
  • public static TSource Single <TSource> (этот источник IEnumerable <TSource>)
  • public static TSource Single <TSource> (этот источник IEnumerable <TSource>, предикат Func <TSource, Boolean>)
  • public static TSource SingleOrDefault <TSource> (этот источник IEnumerable <TSource>)
  • public static TSource SingleOrDefault <TSource> (этот источник IEnumerable <TSource>, предикат Func <TSource, Boolean>)
  • public static IEnumerable <TSource> Пропустить <TSource> (этот источник IEnumerable <TSource>, количество Int32)
  • public static IEnumerable <TSource> SkipWhile <TSource> (этот источник IEnumerable <TSource>, предикат Func <TSource, Boolean>)
  • public static IEnumerable <TSource> SkipWhile <TSource> (этот источник IEnumerable <TSource>, предикат Func <TSource, Int32, Boolean>)
  • public static Decimal Sum (этот IEnumerable <десятичный> источник)
  • public static Double Sum (этот IEnumerable <Double> source)
  • public static Int32 Sum (этот источник IEnumerable <Int32>)
  • public static Int64 Sum (этот источник IEnumerable <Int64>)
  • public static Nullable <Decimal> Sum (этот IEnumerable <Nullable <Decimal >> source)
  • public static Nullable <Double> Sum (этот IEnumerable <Nullable <Double >> источник)
  • public static Nullable <Int32> Sum (этот IEnumerable <Nullable <Int32 >> source)
  • public static Nullable <Int64> Sum (этот IEnumerable <Nullable <Int64 >> источник)
  • public static Nullable <Single> Sum (этот IEnumerable <Nullable <Single >> source)
  • public static Single Sum (этот IEnumerable <Single> source)
  • public static Decimal Sum <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, Decimal>)
  • public static Double Sum <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, Double>)
  • public static Int32 Sum <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, Int32>)
  • public static Int64 Sum <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, Int64>)
  • public static Nullable <Decimal> Sum <TSource> (этот источник IEnumerable <TSource>, Func <TSource, Nullable <Decimal >> selector)
  • public static Nullable <Double> Sum <TSource> (этот источник IEnumerable <TSource>, Func <TSource, Nullable <Double >> selector)
  • public static Nullable <Int32> Sum <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, Nullable <Int32 >>)
  • public static Nullable <Int64> Sum <TSource> (этот источник IEnumerable <TSource>, Func <TSource, Nullable <Int64 >> селектор)
  • public static Nullable <Single> Sum <TSource> (этот источник IEnumerable <TSource>, Func <TSource, Nullable <Single >> selector)
  • public static Single Sum <TSource> (этот источник IEnumerable <TSource>, селектор Func <TSource, Single>)
  • public static IEnumerable <TSource> Возьмите <TSource> (этот источник IEnumerable <TSource>, количество Int32)
  • public static IEnumerable <TSource> TakeWhile <TSource> (этот источник IEnumerable <TSource>, предикат Func <TSource, Boolean>)
  • public static IEnumerable <TSource> TakeWhile <TSource> (этот источник IEnumerable <TSource>, предикат Func <TSource, Int32, Boolean>)
  • public static IOrderedEnumerable <TSource> ThenBy <TSource, TKey> (этот источник IOrderedEnumerable <TSource>, Func <TSource, TKey> keySelector)
  • public static IOrderedEnumerable <TSource> ThenBy <TSource, TKey> (этот источник IOrderedEnumerable <TSource>, Func <TSource, TKey> keySelector, IComparer <TKey> Comparer)
  • public static IOrderedEnumerable <TSource> ThenByDescending <TSource, TKey> (этот источник IOrderedEnumerable <TSource>, Func <TSource, TKey> keySelector)
  • public static IOrderedEnumerable <TSource> ThenByDescending <TSource, TKey> (этот источник IOrderedEnumerable <TSource>, Func <TSource, TKey> keySelector, IComparer <TKey> comparer)
  • public static TSource [] ToArray <TSource> (этот источник IEnumerable <TSource>)
  • public static Dictionary <TKey, TSource> ToDictionary <TSource, TKey> (этот источник IEnumerable <TSource>, Func <TSource, TKey> keySelector)
  • публичный статический словарь <TKey, TSource> ToDictionary <TSource, TKey> (этот источник IEnumerable <TSource>, Func <TSource, TKey> keySelector, IEqualityComparer <TKey> Comparer)
  • публичный статический словарь <TKey, TElement> ToDictionary <TSource, TKey, TElement> (этот источник IEnumerable <TSource>, Func <TSource, TKey> keySelector, Func <TSource, TElement> elementSelector)
  • публичный статический словарь <TKey, TElement> ToDictionary <TSource, TKey, TElement> (этот источник IEnumerable <TSource>, Func <TSource, TKey> keySelector, Func <TSource, TElement> elementSelector, IEqualityComparer <TKey> Comparer)
  • public static List <TSource> ToList <TSource> (этот источник IEnumerable <TSource>)
  • public static ILookup <TKey, TSource> ToLookup <TSource, TKey> (этот источник IEnumerable <TSource>, Func <TSource, TKey> keySelector)
  • public static ILookup <TKey, TSource> ToLookup <TSource, TKey> (этот источник IEnumerable <TSource>, Func <TSource, TKey> keySelector, IEqualityComparer <TKey> Comparer)
  • public static ILookup <TKey, TElement> ToLookup <TSource, TKey, TElement> (этот источник IEnumerable <TSource>, Func <TSource, TKey> keySelector, Func <TSource, TElement> elementSelector)
  • публичный статический ILookup <TKey, TElement> ToLookup <TSource, TKey, TElement> (этот источник IEnumerable <TSource>, Func <TSource, TKey> keySelector, Func <TSource, TElement> elementSelector, IEqualityComparer <TKey> comparer)
  • public static IEnumerable <TSource> Union <TSource> (этот IEnumerable <TSource> сначала, IEnumerable <TSource> второй)
  • public static IEnumerable <TSource> Union <TSource> (этот IEnumerable <TSource> во-первых, IEnumerable <TSource> второй, IEqualityComparer <TSource> Comparer)
  • public static IEnumerable <TSource> Где <TSource> (этот источник IEnumerable <TSource>, предикат Func <TSource, Boolean>)
  • public static IEnumerable <TSource> Где <TSource> (этот источник IEnumerable <TSource>, предикат Func <TSource, Int32, Boolean>)
  • public static IEnumerable <TResult> Zip <TFirst, TSecond, TResult> (этот IEnumerable <TFirst> сначала, IEnumerable <TSecond> второй, Func <TFirst, TSecond, TResult> resultSelector)

замечания

  • См. Также LINQ .

Встроенные методы LINQ - это методы расширения для интерфейса IEnumerable<T> которые живут в классе System.Linq.Enumerable в сборке System.Core . Они доступны в .NET Framework 3.5 и более поздних версиях.

LINQ позволяет просто изменять, преобразовывать и комбинировать различные IEnumerable с использованием запроса или функционального синтаксиса.

Хотя стандартные методы LINQ могут работать с любым IEnumerable<T> , включая простые массивы и List<T> s, их также можно использовать для объектов базы данных, где множество выражений LINQ во многих случаях может быть преобразовано в SQL, если объект данных поддерживает его. См. LINQ to SQL .

Для методов, которые сравнивают объекты (такие как Contains и Except ), IEquatable<T>.Equals используется, если тип T коллекции реализует этот интерфейс. В противном случае используются стандартные Equals и GetHashCode типа (возможно, переопределенные из реализаций Object по умолчанию). Существуют также перегрузки для этих методов, которые позволяют указать пользовательский IEqualityComparer<T> .

Для методов ...OrDefault default(T) используется для создания значений по умолчанию.

Официальная ссылка: Перечислимый класс

Ленивая оценка

Практически каждый запрос, возвращающий IEnumerable<T> , сразу не оценивается; вместо этого логика задерживается до тех пор, пока запрос не будет повторен. Одним из следствий является то, что каждый раз, когда кто-то выполняет итерацию над IEnumerable<T> созданным с помощью одного из этих запросов, например, .Where() , повторяется полная логика запроса. Если предикат длительный, это может быть причиной проблем с производительностью.

Одно простое решение (когда вы знаете или можете контролировать приблизительный размер результирующей последовательности) состоит в том, чтобы полностью .ToArray() результаты с использованием .ToArray() или .ToList() . .ToDictionary() или .ToLookup() могут выполнять ту же роль. Можно также, конечно, перебрать всю последовательность и буферизировать элементы в соответствии с другой пользовательской логикой.

ToArray() или ToList() ?

Оба .ToArray() и .ToList() все элементы последовательности IEnumerable<T> и сохраняют результаты в коллекции, хранящейся в памяти. Используйте следующие рекомендации, чтобы определить, какой из них выбрать:

  • Для некоторых API может потребоваться T[] или List<T> .
  • .ToList() обычно работает быстрее и генерирует меньше мусора, чем .ToArray() , потому что последний должен копировать все элементы в новую коллекцию фиксированного размера еще раз, чем первый, почти в каждом случае.
  • Элементы могут быть добавлены или удалены из List<T> возвращаемого .ToList() , тогда как T[] возвращаемый из .ToArray() остается фиксированным размером на протяжении всего его жизненного .ToArray() . Другими словами, List<T> является изменяемым, а T[] является неизменным.
  • T[] возвращаемый из .ToArray() использует меньше памяти, чем List<T> возвращаемый из .ToList() , поэтому, если результат будет храниться в течение длительного времени, предпочитайте .ToArray() . Calling List<T>.TrimExcess() сделает разницу в памяти строго академической ценой за счет исключения относительного преимущества скорости .ToList() .

LINQ Связанные примеры