.NET FrameworkLINQ


Introduction

LINQ (Language Integrated Query) est une expression qui extrait des données d'une source de données. LINQ simplifie cette situation en proposant un modèle cohérent pour travailler avec des données sur différents types de sources de données et de formats. Dans une requête LINQ, vous travaillez toujours avec des objets. Vous utilisez les mêmes modèles de codage de base pour interroger et transformer des données dans des documents XML, des bases de données SQL, des ensembles de données ADO.NET, des collections .NET et tout autre format pour lequel un fournisseur est disponible. LINQ peut être utilisé en C # et VB.

Syntaxe

  • statique statique TSource Aggregate <TSource> (cette source IEnumerable <TSource>, Func <TSource, TSource, TSource> func)
  • statique statique TAccumulate Aggregate <TSource, TAccumulate> (cette source IEnumerable <TSource>, graine TAccumulate, Func <TAccumulate, TSource, TAccumulate> func)
  • statique statique TResult Aggregate <TSource, TAccumulate, TResult> (cette source IEnumerable <TSource>, graine TAccumulate, Func <TAccumulate, TSource, TAccumulate> func, Func <TAccumulate, TResult> resultSelector)
  • public statique Booléen Tous <TSource> (cet attribut IEnumerable <TSource> source, Func <TSource, Boolean>)
  • Booléen statique public Tout <TSource> (cette source IEnumerable <TSource>)
  • booléen statique public Tout <TSource> (cet attribut IEnumerable <TSource> source, Func <TSource, Boolean>)
  • public statique IEnumerable <TSource> AsEnumerable <TSource> (cette source IEnumerable <TSource>)
  • Moyenne décimale statique publique (cette source IEnumerable <Decimal>)
  • Double statique statique publique (cette source IEnumerable <Double>)
  • Double statique statique publique (cette source IEnumerable <Int32>)
  • public static Double Average (cette source IEnumerable <Int64>)
  • public statique Nullable Moyenne <Decimal> (cette source IEnumerable <Nullable <Decimal >>)
  • public statique Nullable <Double> Average (cette source IEnumerable <Nullable <Double >>)
  • public statique Nullable <Double> Average (cette source IEnumerable <Nullable <Int32 >>)
  • public statique Nullable <Double> Average (cette source IEnumerable <Nullable <Int64 >>)
  • public statique Nullable <Single> Average (cette source IEnumerable <Nullable <Single >>)
  • Public Single Single Average (cette source IEnumerable <Single>)
  • Moyenne décimale statique publique <TSource> (ce sélecteur IEnumerable <TSource>, Func <TSource, Decimal>)
  • statique publique Double Moyenne <TSource> (cette source IEnumerable <TSource>, Func <TSource, Double> sélecteur)
  • statique publique Double Moyenne <TSource> (cette source IEnumerable <TSource>, Func <TSource, Int32> sélecteur)
  • double statique public <TSource> (cette source IEnumerable <TSource>, Func <TSource, Int64> sélecteur)
  • public statique Nullable <Decimal> Average <TSource> (ce sélecteur IEnumerable <TSource>, Func <TSource, Nullable <Decimal >>)
  • public statique Nullable <Double> Moyenne <TSource> (cette source IEnumerable <TSource>, Func <TSource, Sélecteur <Double >>)
  • public statique Nullable <Double> Moyenne <TSource> (cette source IEnumerable <TSource>, Func <TSource, Nullable <Int32 >>)
  • public statique Nullable <Double> Moyenne <TSource> (cette source IEnumerable <TSource>, Func <TSource, Nullable <Int64 >>)
  • public static Nullable <Single> Average <TSource> (cette source IEnumerable <TSource>, Func <TSource, Nullable <Single >>)
  • public statique Single Average <TSource> (cette source IEnumerable <TSource>, Func <TSource, Single> sélecteur)
  • public statique IEnumerable <TResult> Cast <TResult> (cette source IEnumerable)
  • public statique IEnumerable <TSource> Concat <TSource> (ceci IEnumerable <TSource> d'abord, IEnumerable <TSource> second)
  • Booléen statique public Contient <TSource> (cette source IEnumerable <TSource>, valeur TSource)
  • Boolean statique public Contient <TSource> (cette source IEnumerable <TSource>, valeur TSource, IEqualityComparer <TSource> comparer)
  • statique statique Int32 Count <TSource> (cette source IEnumerable <TSource>)
  • statique public Int32 Count <TSource> (cet attribut IEnumerable <TSource> source, Func <TSource, Boolean>)
  • public statique IEnumerable <TSource> DefaultIfEmpty <TSource> (cette source IEnumerable <TSource>)
  • public statique IEnumerable <TSource> DefaultIfEmpty <TSource> (cette source IEnumerable <TSource>, TSource defaultValue)
  • statique publique IEnumerable <TSource> Distinct <TSource> (cette source IEnumerable <TSource>)
  • public statique IEnumerable <TSource> Distinct <TSource> (cette source IEnumerable <TSource>, IEqualityComparer <TSource> comparer)
  • Élément TSource statique public <TSource> (cette source IEnumerable <TSource>, index Int32)
  • statique publique TSource ElementAtOrDefault <TSource> (cette source IEnumerable <TSource>, index Int32)
  • public static IEnumerable <TResult> Vide <TResult> ()
  • public static IEnumerable <TSource> Sauf <TSource> (ceci IEnumerable <TSource> d'abord, IEnumerable <TSource> second)
  • public static IEnumerable <TSource> Sauf <TSource> (ceci IEnumerable <TSource> d'abord, IEnumerable <TSource> second, IEqualityComparer <TSource> comparer)
  • statique publique TSource First <TSource> (cette source IEnumerable <TSource>)
  • public statique TSource First <TSource> (ce prédicat IEnumerable <TSource>, Func <TSource, Boolean>)
  • statique publique TSource FirstOrDefault <TSource> (cette source IEnumerable <TSource>)
  • statique publique TSource FirstOrDefault <TSource> (ce prédicat IEnumerable <TSource>, Func <TSource, Boolean>)
  • public static IEnumerable <IGrouping <TKey, TSource >> GroupBy <TSource, TKey> (cette source IEnumerable <TSource>, Func <TSource, TKey> keySelector)
  • public static IEnumerable <IGrouping <TKey, TSource >> GroupBy <TSource, TKey> (cette source IEnumerable <TSource>, Func <TSource, TKey> cléSelector, IEqualityComparer <TKey> comparer
  • public static IEnumerable <IGrouping <TKey, TElement >> GroupBy <TSource, TKey, TElement> (cette source IEnumerable <TSource>, Func <TSource, TKey> keySelector, Func <TSource, TElement> elementSelector)
  • public static IEnumerable <IGrouping <TKey, TElement >> GroupBy <TSource, TKey, TElement> (cette source IEnumerable <TSource>, Func <TSource, TKey> sélecteur de clés, Func <TSource, TElement> elementSelector, IEqualityComparer <TKey> comparer
  • public statique IEnumerable <TResult> GroupBy <TSource, TKey, TResult> (cette source IEnumerable <TSource>, Func <TSource, TKey> keySelector, Func <TKey, IEnumerable <TSource>, TResult> resultSelector)
  • public statique IEnumerable <TResult> GroupBy <TSource, TKey, TResult> (cette source IEnumerable <TSource>, Func <TSource, TKey> KeySelector, Func <TKey, IEnumerable <TSource>, TResult> resultSelector, IEqualityComparer <TKey> comparer
  • public statique IEnumerable <TResult> GroupBy <TSource, TKey, TElement, TResult> (cette source IEnumerable <TSource>, Func <TSource, TKey> sélecteur de clés, Func <TSource, TElement> elementSelector, Func <TKey, IEnumerable <TElement>, TResult > resultSelector)
  • public statique IEnumerable <TResult> GroupBy <TSource, TKey, TElement, TResult> (cette source IEnumerable <TSource>, Func <TSource, TKey> sélecteur de clés, Func <TSource, TElement> elementSelector, Func <TKey, IEnumerable <TElement>, TResult > resultSelector, IEqualityComparer <TKey> comparer
  • public statique IEnumerable <TResult> GroupJoin <TOuter, TInner, TKey, TResult> (this externe IEnumerable <TOuter>, IEnumerable <TInner> inner, Func <TOuter, TKey> outerKeySelector, Func <TInner, TKey> innerKeySelector, Func <TOuter, IEnumerable <TInner>, TResult> resultSelector)
  • public statique IEnumerable <TResult> GroupJoin <TOuter, TInner, TKey, TResult> (this externe IEnumerable <TOuter>, IEnumerable <TInner> inner, Func <TOuter, TKey> outerKeySelector, Func <TInner, TKey> innerKeySelector, Func <TOuter, IEnumerable <TInner>, TResult> resultSelector, IEqualityComparer <TKey> comparer
  • public statique IEnumerable <TSource> Intersect <TSource> (ceci IEnumerable <TSource> d'abord, IEnumerable <TSource> second)
  • public statique IEnumerable <TSource> Intersect <TSource> (ce IEnumerable <TSource> en premier, IEnumerable <TSource> second, IEqualityComparer <TSource> comparer)
  • public static IEnumerable <TResult> Join <TOuter, TInner, TKey, TResult> (this externe IEnumerable <TOuter>, IEnumerable <TInner> inner, Func <TOuter, TKey> outerKeySelector, Func <TInner, TKey> innerKeySelector, Func <TOuter, TInner, TResult> resultSelector)
  • public static IEnumerable <TResult> Join <TOuter, TInner, TKey, TResult> (this externe IEnumerable <TOuter>, IEnumerable <TInner> inner, Func <TOuter, TKey> outerKeySelector, Func <TInner, TKey> innerKeySelector, Func <TOuter, TInner, TResult> resultSelector, IEqualityComparer <TKey> comparer
  • statique publique TSource Last <TSource> (cette source IEnumerable <TSource>)
  • TSource statique public Last <TSource> (cet attribut IEnumerable <TSource> source, Func <TSource, Boolean>)
  • statique publique TSource LastOrDefault <TSource> (cette source IEnumerable <TSource>)
  • statique publique TSource LastOrDefault <TSource> (ce prédicat IEnumerable <TSource>, Func <TSource, Boolean>)
  • public statique Int64 LongCount <TSource> (cette source IEnumerable <TSource>)
  • public statique Int64 LongCount <TSource> (ce prédicat IEnumerable <TSource>, Func <TSource, Boolean>)
  • public decimal max statique (cette source IEnumerable <Decimal>)
  • statique publique Double Max (cette source IEnumerable <Double>)
  • public statique Int32 Max (cette source IEnumerable <Int32>)
  • public statique Int64 Max (cette source IEnumerable <Int64>)
  • public static Nullable <Decimal> Max (cette source IEnumerable <Nullable <Decimal >>)
  • public static Nullable <Double> Max (cette source IEnumerable <Nullable <Double >>)
  • public static Nullable <Int32> Max (cette source IEnumerable <Nullable <Int32 >>)
  • public static Nullable <Int64> Max (cette source IEnumerable <Nullable <Int64 >>)
  • public static Nullable <Single> Max (cette source IEnumerable <Nullable <Single >>)
  • statique publique Single Max (cette source IEnumerable <Single>)
  • statique publique TSource Max <TSource> (cette source IEnumerable <TSource>)
  • décimal statique public Max <TSource> (ce sélecteur IEnumerable <TSource>, Func <TSource, Decimal>)
  • statique publique Double Max <TSource> (cette source IEnumerable <TSource>, Func <TSource, Double> sélecteur)
  • public static Int32 Max <TSource> (ce sélecteur IEnumerable <TSource>, Func <TSource, Int32>)
  • public statique Int64 Max <TSource> (ce sélecteur IEnumerable <TSource>, Func <TSource, Int64>)
  • public statique Nullable <Décimal> Max <TSource> (ce sélecteur IEnumerable <TSource>, Func <TSource, Nullable <Decimal >>)
  • public statique Nullable <Double> Max <TSource> (cette source IEnumerable <TSource>, Func <TSource, Nullable <Double >> sélecteur)
  • public statique Nullable <Int32> Max <TSource> (cette source IEnumerable <TSource>, Func <TSource, Nullable <Int32 >> sélecteur)
  • public statique Nullable <Int64> Max <TSource> (cette source IEnumerable <TSource>, Func <TSource, Nullable <Int64 >>)
  • public statique Nullable <Single> Max <TSource> (cette source IEnumerable <TSource>, Func <TSource, sélecteur <Single >>)
  • statique publique Single Max <TSource> (cette source IEnumerable <TSource>, Func <TSource, Single> sélecteur)
  • statique publique TResult Max <TSource, TResult> (ce sélecteur IEnumerable <TSource>, Func <TSource, TResult>)
  • public decimal min decimal (cette source IEnumerable <Decimal>)
  • public static Double Min (cette source IEnumerable <Double>)
  • public static Int32 Min (cette source IEnumerable <Int32>)
  • public static Int64 Min (cette source IEnumerable <Int64>)
  • public static Nullable <Decimal> Min (cette source IEnumerable <Nullable <Decimal >>)
  • public static Nullable <Double> Min (cette source IEnumerable <Nullable <Double >>)
  • public static Nullable <Int32> Min (cette source IEnumerable <Nullable <Int32 >>)
  • public static Nullable <Int64> Min (cette source IEnumerable <Nullable <Int64 >>)
  • public static Nullable <Single> Min (cette source IEnumerable <Nullable <Single >>)
  • public static Single Min (cette source IEnumerable <Single>)
  • statique publique TSource Min <TSource> (cette source IEnumerable <TSource>)
  • statique publique décimale min <TSource> (ce sélecteur IEnumerable <TSource>, Func <TSource, Decimal>)
  • statique publique Double Min <TSource> (cette source IEnumerable <TSource>, Func <TSource, Double> sélecteur)
  • public static Int32 Min <TSource> (ce sélecteur IEnumerable <TSource>, Func <TSource, Int32>)
  • public static Int64 Min <TSource> (ce sélecteur IEnumerable <TSource>, Func <TSource, Int64>)
  • public static Nullable <Decimal> Min <TSource> (ce sélecteur IEnumerable <TSource>, Func <TSource, Nullable <Decimal >>)
  • public statique Nullable <Double> Min <TSource> (cette source IEnumerable <TSource>, Func <TSource, Nullable <Double >> sélecteur)
  • public statique Nullable <Int32> Min <TSource> (cette source IEnumerable <TSource>, Func <TSource, sélecteur Nullable <Int32 >>)
  • public statique Nullable <Int64> Min <TSource> (cette source IEnumerable <TSource>, Func <TSource, Nullable <Int64 >>)
  • public static Nullable <Single> Min <TSource> (cette source IEnumerable <TSource>, Func <TSource, sélecteur <Single >>)
  • statique publique Single Min <TSource> (cette source IEnumerable <TSource>, Func <TSource, Single> sélecteur)
  • statique publique TResult Min <TSource, TResult> (ce sélecteur IEnumerable <TSource>, Func <TSource, TResult>)
  • public statique IEnumerable <TResult> OfType <TResult> (cette source IEnumerable)
  • public statique IOrderedEnumerable <TSource> OrderBy <TSource, TKey> (cette source IEnumerable <TSource>, Func <TSource, TKey> keySelector)
  • public statique IOrderedEnumerable <TSource> OrderBy <TSource, TKey> (cette source IEnumerable <TSource>, Func <TSource, TKey> cléSelector, IComparer <TKey> comparer
  • public statique IOrderedEnumerable <TSource> OrderByDescending <TSource, TKey> (cette source IEnumerable <TSource>, Func <TSource, TKey> keySelector)
  • public statique IOrderedEnumerable <TSource> OrderByDescending <TSource, TKey> (cette source IEnumerable <TSource>, Func <TSource, TKey> cléSelector, IComparer <TKey> comparer
  • public static IEnumerable <Int32> Range (démarrage Int32, nombre Int32)
  • public static IEnumerable <TResult> Répéter <TResult> (élément TResult, nombre Int32)
  • statique publique IEnumerable <TSource> Reverse <TSource> (cette source IEnumerable <TSource>)
  • public static IEnumerable <TResult> Sélectionnez <TSource, TResult> (ce sélecteur IEnumerable <TSource>, Func <TSource, TResult>)
  • public static IEnumerable <TResult> Sélectionnez <TSource, TResult> (ce sélecteur IEnumerable <TSource>, Func <TSource, Int32, TResult>)
  • public statique IEnumerable <TResult> SelectMany <TSource, TResult> (cette source IEnumerable <TSource>, Func <TSource, IEnumerable <TResult >>)
  • public statique IEnumerable <TResult> SelectMany <TSource, TResult> (cette source IEnumerable <TSource>, Func <TSource, Int32, IEnumerable <TResult >> sélecteur)
  • public statique IEnumerable <TResult> SelectMany <TSource, TCollection, TResult> (cette source IEnumerable <TSource>, Func <TSource, IEnumerable <TCollection >> collectionSelector, Func <TSource, TCollection, TResult> resultSelector)
  • public statique IEnumerable <TResult> SelectMany <TSource, TCollection, TResult> (cette source IEnumerable <TSource>, Func <TSource, Int32, IEnumerable <TCollection >> collectionSelector, Func <TSource, TCollection, TResult> resultSelector)
  • public statique Boolean SequenceEqual <TSource> (ceci IEnumerable <TSource> d'abord, IEnumerable <TSource> second)
  • public statique Boolean SequenceEqual <TSource> (ceci IEnumerable <TSource> en premier, IEnumerable <TSource> second, IEqualityComparer <TSource> comparer)
  • statique publique TSource Single <TSource> (cette source IEnumerable <TSource>)
  • statique publique TSource Single <TSource> (cet prédicat IEnumerable <TSource>, Func <TSource, Boolean>)
  • statique publique TSource SingleOrDefault <TSource> (cette source IEnumerable <TSource>)
  • statique publique TSource SingleOrDefault <TSource> (ce prédicat IEnumerable <TSource>, Func <TSource, Boolean>)
  • public static IEnumerable <TSource> Ignorer <TSource> (cette source IEnumerable <TSource>, nombre Int32)
  • public statique IEnumerable <TSource> SkipWhile <TSource> (cet prédicat IEnumerable <TSource>, Func <TSource, Boolean>)
  • public statique IEnumerable <TSource> SkipWhile <TSource> (cette source IEnumerable <TSource>, Func <TSource, Int32, Boolean> prédicat)
  • Sum décimal statique public (cette source IEnumerable <Decimal>)
  • statique publique Double Sum (cette source IEnumerable <Double>)
  • statique statique Int32 Sum (cette source IEnumerable <Int32>)
  • public statique Int64 Sum (cette source IEnumerable <Int64>)
  • public statique Nullable <Decimal> Sum (cette source IEnumerable <Nullable <Decimal >>)
  • public statique Nullable <Double> Sum (cette source IEnumerable <Nullable <Double >>)
  • public statique Nullable <Int32> Sum (cette source IEnumerable <Nullable <Int32 >>)
  • public static Nullable <Int64> Sum (cette source IEnumerable <Nullable <Int64 >>)
  • public statique Nullable <Single> Sum (cette source IEnumerable <Nullable <Single >>)
  • statique publique Single Sum (cette source IEnumerable <Single>)
  • Somme décimale statique publique <TSource> (ce sélecteur IEnumerable <TSource>, Func <TSource, Decimal>)
  • statique publique Double Sum <TSource> (cette source IEnumerable <TSource>, Func <TSource, Double> sélecteur)
  • statique publique Int32 Sum <TSource> (ce sélecteur IEnumerable <TSource>, Func <TSource, Int32>)
  • statique publique Int64 Somme <TSource> (cette source IEnumerable <TSource>, Func <TSource, Int64> sélecteur)
  • public statique Nullable <Decimal> Sum <TSource> (ce sélecteur IEnumerable <TSource>, Func <TSource, Nullable <Decimal >>)
  • statique publique Nullable <Double> Sum <TSource> (cette source IEnumerable <TSource>, Func <TSource, Nullable <Double >>)
  • statique publique Nullable <Int32> Somme <TSource> (cette source IEnumerable <TSource>, Func <TSource, Nullable <Int32 >> sélecteur)
  • public statique Nullable <Int64> Sum <TSource> (cette source IEnumerable <TSource>, Func <TSource, Nullable <Int64 >>)
  • statique publique Nullable <Single> Sum <TSource> (ce sélecteur IEnumerable <TSource>, Func <TSource, Nullable <Single >>)
  • statique publique Single Sum <TSource> (cette source IEnumerable <TSource>, Func <TSource, Single> sélecteur)
  • public static IEnumerable <TSource> Take <TSource> (cette source IEnumerable <TSource>, nombre Int32)
  • public statique IEnumerable <TSource> TakeWhile <TSource> (ce prédicat IEnumerable <TSource>, Func <TSource, Boolean>)
  • public statique IEnumerable <TSource> TakeWhile <TSource> (cette source IEnumerable <TSource>, Func <TSource, Int32, Boolean> prédicat)
  • public statique IOrderedEnumerable <TSource> ThenBy <TSource, TKey> (cette source IOrderedEnumerable <TSource>, Func <TSource, TKey> keySelector)
  • public statique IOrderedEnumerable <TSource> ThenBy <TSource, TKey> (cette source IOrderedEnumerable <TSource>, Func <TSource, TKey> cléSelector, IComparer <TKey> comparer
  • public statique IOrderedEnumerable <TSource> ThenByDescending <TSource, TKey> (cette source IOrderedEnumerable <TSource>, Func <TSource, TKey> keySelector)
  • public statique IOrderedEnumerable <TSource> ThenByDescending <TSource, TKey> (cette source IOrderedEnumerable <TSource>, Func <TSource, TKey> cléSelector, IComparer <TKey> comparer
  • statique publique TSource [] ToArray <TSource> (cette source IEnumerable <TSource>)
  • Dictionnaire statique public <TKey, TSource> ToDictionary <TSource, TKey> (cette source IEnumerable <TSource>, Func <TSource, TKey> keySelector)
  • Dictionnaire statique public <TKey, TSource> ToDictionary <TSource, TKey> (cette source IEnumerable <TSource>, Func <TSource, TKey> KeySelector, IEqualityComparer <TKey> comparer
  • Dictionnaire statique public <TKey, TElement> ToDictionary <TSource, TKey, TElement> (cette source IEnumerable <TSource>, Func <TSource, TKey> KeySelector, Func <TSource, TElement> elementSelector)
  • Dictionnaire statique public <TKey, TElement> ToDictionary <TSource, TKey, TElement> (cette source IEnumerable <TSource>, Func <TSource, TKey> KeySelector, Func <TSource, TElement> elementSelector, IEqualityComparer <TKey> comparer
  • Liste statique publique <TSource> ToList <TSource> (cette source IEnumerable <TSource>)
  • ILookup statique public <TKey, TSource> ToLookup <TSource, TKey> (cette source IEnumerable <TSource>, Func <TSource, TKey> keySelector)
  • ILookup statique public <TKey, TSource> ToLookup <TSource, TKey> (cette source IEnumerable <TSource>, Func <TSource, TKey> KeySelector, IEqualityComparer <TKey> comparer)
  • ILookup statique public <TKey, TElement> ToLookup <TSource, TKey, TElement> (cette source IEnumerable <TSource>, Func <TSource, TKey> keySelector, Func <TSource, TElement> elementSelector)
  • ILookup statique public <TKey, TElement> ToLookup <TSource, TKey, TElement> (cette source IEnumerable <TSource>, Func <TSource, TKey> sélecteur de clés, Func <TSource, TElement> elementSelector, IEqualityComparer <TKey> comparer
  • public statique IEnumerable <TSource> Union <TSource> (ceci IEnumerable <TSource> d'abord, IEnumerable <TSource> second)
  • public statique IEnumerable <TSource> Union <TSource> (ceci IEnumerable <TSource> en premier, IEnumerable <TSource> second, IEqualityComparer <TSource> comparer)
  • public statique IEnumerable <TSource> Où <TSource> (cette source IEnumerable <TSource>, Func <TSource, Boolean> prédicat)
  • public statique IEnumerable <TSource> Où <TSource> (cette source IEnumerable <TSource>, Func <TSource, Int32, Boolean> prédicat)
  • public statique IEnumerable <TResult> Zip <TFirst, TSecond, TResult> (cet IEnumerable <TFirst> en premier, IEnumerable <TSecond> second, Func <TFirst, TSecond, TResult> resultSelector)

Remarques

Les méthodes intégrées LINQ sont des méthodes d'extension pour l'interface IEnumerable<T> qui vivent dans la classe System.Linq.Enumerable de l'assembly System.Core . Ils sont disponibles dans .NET Framework 3.5 et versions ultérieures.

LINQ permet la modification, la transformation et la combinaison simples de divers IEnumerable utilisant une syntaxe de type requête ou fonctionnelle.

Alors que les méthodes LINQ standard peuvent fonctionner sur tout IEnumerable<T> , y compris les tableaux simples et List<T> , elles peuvent également être utilisées sur des objets de base de données, où l’ensemble des expressions LINQ peut être transformé en SQL si le objet de données le prend en charge. Voir LINQ to SQL .

Pour les méthodes qui comparent des objets (tels que Contains et Except ), IEquatable<T>.Equals est utilisé si le type T de la collection implémente cette interface. Sinon, les Equals standard et GetHashCode du type (éventuellement remplacées par les implémentations d' Object par défaut) sont utilisées. Il existe également des surcharges pour ces méthodes qui permettent de spécifier un IEqualityComparer<T> .

Pour les méthodes ...OrDefault , la default(T) est utilisée pour générer des valeurs par défaut.

Référence officielle: Classe énumérable

Évaluation paresseuse

Pratiquement chaque requête qui renvoie un IEnumerable<T> n'est pas évaluée immédiatement; au lieu de cela, la logique est retardée jusqu'à ce que la requête soit répétée. Une implication est que chaque fois que quelqu'un parcourt un IEnumerable<T> créé à partir de l'une de ces requêtes, par exemple .Where() , la logique de requête complète est répétée. Si le prédicat est de longue durée, cela peut entraîner des problèmes de performances.

Une solution simple (lorsque vous connaissez ou pouvez contrôler la taille approximative de la séquence résultante) consiste à mettre les résultats en mémoire tampon en utilisant .ToArray() ou .ToList() . .ToDictionary() ou .ToLookup() peuvent remplir le même rôle. Bien entendu, on peut également parcourir toute la séquence et mettre les éléments en mémoire tampon selon une autre logique personnalisée.

ToArray() ou ToList() ?

Les deux .ToArray() et .ToList() parcourent tous les éléments d'une séquence IEnumerable<T> et enregistrent les résultats dans une collection stockée en mémoire. Utilisez les directives suivantes pour déterminer laquelle choisir:

  • Certaines API peuvent nécessiter un T[] ou une List<T> .
  • .ToList() s'exécute généralement plus rapidement et génère moins de déchets que .ToArray() , car ce dernier doit copier tous les éléments dans une nouvelle collection de taille fixe une fois de plus, dans presque tous les cas.
  • Les éléments peuvent être ajoutés ou supprimés de la List<T> renvoyée par .ToList() , tandis que le T[] renvoyé par .ToArray() reste une taille fixe tout au long de sa durée de vie. En d'autres termes, List<T> est modifiable et T[] est immuable.
  • Le T[] renvoyé par .ToArray() utilise moins de mémoire que le List<T> renvoyé par .ToList() , donc si le résultat doit être stocké pendant longtemps, préférez .ToArray() . La List<T>.TrimExcess() appels List<T>.TrimExcess() rendrait la différence de mémoire strictement académique, au détriment de l'avantage relatif de la vitesse de .ToList() .

LINQ Exemples Liés