.NET FrameworkLINQ

introduzione

LINQ (Language Integrated Query) è un'espressione che recupera i dati da un'origine dati. LINQ semplifica questa situazione offrendo un modello coerente per lavorare con i dati attraverso vari tipi di fonti e formati di dati. In una query LINQ, si lavora sempre con gli oggetti. Si utilizzano gli stessi schemi di codifica di base per interrogare e trasformare i dati in documenti XML, database SQL, set di dati ADO.NET, raccolte .NET e qualsiasi altro formato per il quale un provider è disponibile. LINQ può essere utilizzato in C # e VB.

Sintassi

  • public static TSource Aggregate <TSource> (questa sorgente IEnumerable <TSource>, Func <TSource, TSource, TSource> func)
  • TAccumulate Aggregate statico pubblico <TSource, TAccumulate> (questa sorgente IEnumerable <TSource>, seme TAccumulate, Func <TAccumulate, TSource, TAccumulate> func)
  • statico pubblico TResult Aggregate <TSource, TAccumulate, TResult> (questa sorgente IEnumerable <TSource>, TAccumulate seed, Func <TAccumulate, TSource, TAccumulate>, Func <TAccumulate, TResult> resultSelector)
  • public static Booleano Tutti <TSource> (questo predicato IEnumerable <Origine TSource, Func <TSource, Boolean>)
  • public static Boolean Any <TSource> (questa origine IEnumerable <TSource>)
  • public static Booleano Any <TSource> (questo predicato IEnumerable <Origine TS, Fun <TSource, Boolean>)
  • public static IEnumerable <TSource> AsEnumerable <TSource> (questa sorgente IEnumerable <TSource>)
  • Media decimale statica pubblica (questa origine IEnumerable <Decimal>)
  • Double Average statico pubblico (questo IEnumerable <Double> origine)
  • Double Average statico pubblico (questa sorgente IEnumerable <Int32>)
  • Double Average statico pubblico (questa sorgente IEnumerable <Int64>)
  • public static Nullable <Decimal> Average (questa fonte IEnumerable <Nullable <Decimal >>)
  • public static Nullable <Double> Average (this IEnumerable <Nullable <Double >> source)
  • public static Nullable <Double> Average (questa sorgente IEnumerable <Nullable <Int32 >>)
  • public static Nullable <Double> Average (questa fonte IEnumerable <Nullable <Int64 >>)
  • public static Nullable <Single> Average (this IEnumerable <Nullable <Single >> source)
  • Media statica pubblica singola (questa origine IEnumerable <Single>)
  • Media decimale statica media <TSource> (questo selettore IEnumerable <TSource>, Func <TSource, Decimal>)
  • media statica Double Average <TSource> (questo sorgente IEnumerable <TSource>, Func <TSource, Double>)
  • media statica Double Average <TSource> (questo componente IEnumerable <TSource>, Func <TSource, Int32>)
  • media statica Double Average <TSource> (questo selettore IEnumerable <TSource>, Func <TSource, Int64>)
  • public static Nullable <Decimal> Average <TSource> (questo IEnumerable <Origine TSource, Func <TSource, Nullable <Decimale >> Selettore)
  • public static Nullable <Double> Average <TSource> (questa sorgente IEnumerable <TSource>, Func <TSource, Nullable <Double >>)
  • public static Nullable <Double> Average <TSource> (questo IEnumerable <Origine TSource> Func <TSource, Nullable <Int32 >> selector)
  • public static Nullable <Double> Average <TSource> (questo IEnumerable <Origine TSource> Func <TSource, Nullable <Int64 >> selector)
  • public static Nullable <Single> Average <TSource> (questa sorgente IEnumerable <TSource>, Func <TSource, Nullable <Single >>)
  • media singola statica pubblica <TSource> (questo selettore IEnumerable <Origine TSource, Func <TSource, Single>)
  • public static IEnumerable <TResult> Cast <TResult> (questa sorgente IEnumerable)
  • public static IEnumerable <TSource> Concat <TSource> (questo IEnumerable <TSource> first, IEnumerable <TSource> secondo)
  • public static Boolean Contiene <TSource> (questa origine IEnumerable <TSource>, valore TSource)
  • public static Boolean Contiene <TSource> (questa origine IEnumerable <TSource>, valore TSource, Comparatore IEqualityComparer <TSource>)
  • Conteggio Int32 statico pubblico <TSource> (questa origine IEnumerable <TSource>)
  • Conteggio Int32 statico pubblico <TSource> (questo predicato IEnumerable <Origine TSource, Func <TSource, Boolean>)
  • public static IEnumerable <TSource> DefaultIfEmpty <TSource> (questa origine IEnumerable <TSource>)
  • public static IEnumerable <TSource> DefaultIfEmpty <TSource> (questa sorgente IEnumerable <TSource>, TSource defaultValue)
  • public static IEnumerable <TSource> Distinct <TSource> (questa origine IEnumerable <TSource>)
  • public static IEnumerable <TSource> Distinct <TSource> (questa sorgente IEnumerable <TSource>, IEqualityComparer <TSource> comparer)
  • public static TSource ElementAt <TSource> (questa sorgente IEnumerable <TSource>, indice Int32)
  • pubblico statico TSource ElementAtOrDefault <TSource> (questa origine IEnumerable <TSource>, indice Int32)
  • public static IEnumerable <TResult> Empty <TResult> ()
  • public static IEnumerable <TSource> Eccetto <TSource> (questo IEnumerable <TSource> first, IEnumerable <TSource> secondo)
  • public static IEnumerable <TSource> Tranne <TSource> (questo IEnumerable <TSource> first, IEnumerable <TSource> secondo, IEqualityComparer <TSource> comparer)
  • public static TSource First <TSource> (questa origine IEnumerable <TSource>)
  • public static TSource First <TSource> (questo predicato IEnumerable <TSource> source, Func <TSource, Boolean>)
  • public static TSource FirstOrDefault <TSource> (questa origine IEnumerable <TSource>)
  • public static TSource FirstOrDefault <TSource> (questo predicato IEnumerable <TSource> source, Func <TSource, Boolean>)
  • public static IEnumerable <IGrouping <TKey, TSource >> GroupBy <TSource, TKey> (questa sorgente IEnumerable <TSource>, Func <TSource, TKey> keySelector)
  • public static IEnumerable <IGrouping <TKey, TSource >> GroupBy <TSource, TKey> (questa sorgente IEnumerable <TSource>, Func <TSource, TKey> keySelector, IEqualityComparer <TKey> comparer)
  • public static IEnumerable <IGrouping <TKey, TElement >> GroupBy <TSource, TKey, TElement> (questa sorgente IEnumerable <TSource>, Func <TSource, TKey> keySelector, Func <TSource, TElement> elementSelector)
  • public static IEnumerable <IGrouping <TKey, TElement >> GroupBy <TSource, TKey, TElement> (questa sorgente IEnumerable <TSource>, Func <TSource, TKey> keySelector, Func <TSource, TElement> elementSelector, IEqualityComparer <TKey> comparer)
  • public static IEnumerable <TResult> GroupBy <TSource, TKey, TResult> (questa sorgente IEnumerable <TSource>, Func <TSource, TKey> keySelector, Func <TKey, IEnumerable <TSource>, TResult> resultSelector)
  • public static IEnumerable <TResult> GroupBy <TSource, TKey, TResult> (questa sorgente IEnumerable <TSource>, Func <TSource, TKey> keySelector, Func <TKey, IEnumerable <TSource>, TResult> resultSelector, IEqualityComparer <TKey> comparer)
  • public static IEnumerable <TResult> GroupBy <TSource, TKey, TElement, TResult> (questa sorgente IEnumerable <TSource>, Func <TSource, TKey> keySelector, Func <TSource, TElement> elementSelector, Func <TKey, IEnumerable <TElement>, TResult > resultSelector)
  • public static IEnumerable <TResult> GroupBy <TSource, TKey, TElement, TResult> (questa sorgente IEnumerable <TSource>, Func <TSource, TKey> keySelector, Func <TSource, TElement> elementSelector, Func <TKey, IEnumerable <TElement>, TResult > resultSelector, IEqualityComparer <TKey> comparer)
  • public static IEnumerable <TResult> GroupJoin <TOuter, TInner, TKey, TResult> (questo IEnumerable <TOuter> esterno, IEnumerable <TInner> interno, Func <TOuter, TKey> outerKeySelector, Func <TInner, TKey> innerKeySelector, Func <TOuter, IEnumerable <TInner>, TResult> resultSelector)
  • public static IEnumerable <TResult> GroupJoin <TOuter, TInner, TKey, TResult> (questo IEnumerable <TOuter> esterno, IEnumerable <TInner> interno, Func <TOuter, TKey> outerKeySelector, Func <TInner, TKey> innerKeySelector, Func <TOuter, IEnumerable <TInner>, TResult> resultSelector, IEqualityComparer <TKey> comparer)
  • public static IEnumerable <TSource> Intersect <TSource> (questo IEnumerable <TSource> first, IEnumerable <TSource> second)
  • public static IEnumerable <TSource> Intersect <TSource> (questo IEnumerable <TSource> first, IEnumerable <TSource> secondo, IEqualityComparer <TSource> comparer)
  • public static IEnumerable <TResult> Join <TOuter, TInner, TKey, TResult> (questo IEnumerable <TOuter> esterno, IEnumerable <TInner> interno, Func <TOuter, TKey> outerKeySelector, Func <TInner, TKey> innerKeySelector, Func <TOuter, TInner, TResult> resultSelector)
  • public static IEnumerable <TResult> Join <TOuter, TInner, TKey, TResult> (questo IEnumerable <TOuter> esterno, IEnumerable <TInner> interno, Func <TOuter, TKey> outerKeySelector, Func <TInner, TKey> innerKeySelector, Func <TOuter, TInner, TResult> resultSelector, IEqualityComparer <TKey> comparer)
  • public static TSource Last <TSource> (questa fonte IEnumerable <TSource>)
  • public static TSource Last <TSource> (questo predicato IEnumerable <TSource> source, Func <TSource, Boolean>)
  • public static TSource LastOrDefault <TSource> (questa origine IEnumerable <TSource>)
  • public static TSource LastOrDefault <TSource> (questo predicato IEnumerable <TSource>, Func <TSource, Boolean>)
  • public static Int64 LongCount <TSource> (questa origine IEnumerable <TSource>)
  • public static Int64 LongCount <TSource> (questo predicato IEnumerable <TSource> source, Func <TSource, Boolean>)
  • Max decimale statico pubblico (questa origine IEnumerable <Decimal>)
  • Double Max statico pubblico (questa sorgente <Double> di IEnumerable)
  • Int32 Max statico pubblico (questa origine IEnumerable <Int32>)
  • pubblico statico Int64 Max (questa sorgente IEnumerable <Int64>)
  • public static Nullable <Decimal> Max (questa sorgente IEnumerable <Nullable <Decimal >>)
  • public static Nullable <Double> Max (questa sorgente IEnumerable <Nullable <Double >>)
  • statico pubblico Nullable <Int32> Max (questa sorgente IEnumerable <Nullable <Int32 >>)
  • public static Nullable <Int64> Max (questa sorgente IEnumerable <Nullable <Int64 >>)
  • public static Nullable <Single> Max (questa sorgente IEnumerable <Nullable <Single >>)
  • Single Max pubblico statico (questa sorgente IEnumerable <Single>)
  • public static TSource Max <TSource> (questa origine IEnumerable <TSource>)
  • decimale statico pubblico massimo <TSource> (questo selettore IEnumerable <TSource>, Func <TSource, Decimal>)
  • public static Double Max <TSource> (questo sorgente IEnumerable <TSource>, Func <TSource, Double>)
  • public static Int32 Max <TSource> (questo selettore IEnumerable <TSource>, Func <TSource, Int32>)
  • public static Int64 Max <TSource> (questo selettore IEnumerable <TSource>, Func <TSource, Int64>)
  • public static Nullable <Decimal> Max <TSource> (questo sorgente IEnumerable <TSource>, Func <TSource, Nullable <Decimal >>)
  • public static Nullable <Double> Max <TSource> (questa sorgente IEnumerable <TSource>, Func <TSource, Nullable <Double >>)
  • public static Nullable <Int32> Max <TSource> (questo sorgente IEnumerable <TSource>, Func <TSource, Nullable <Int32 >>)
  • public static Nullable <Int64> Max <TSource> (questo IEnumerable <Origine TSource> Func <TSource, Nullable <Int64 >> selector)
  • public static Nullable <Single> Max <TSource> (questo sorgente IEnumerable <TSource>, Func <TSource, Nullable <Single >>)
  • public static Single Max <TSource> (questo sorgente IEnumerable <TSource>, Func <TSource, Single>)
  • pubblico statico TResult Max <TSource, TResult> (questo sorgente IEnumerable <TSource>, Func <TSource, TResult>)
  • Minimo statico pubblico Minimo (questa origine IEnumerable <Decimal>)
  • Double Min statico pubblico (questa origine IEnumerable <Double>)
  • public static Int32 Min (questa sorgente IEnumerable <Int32>)
  • pubblico statico Int64 Min (questa sorgente IEnumerable <Int64>)
  • public static Nullable <Decimal> Min (questa fonte IEnumerable <Nullable <Decimal >>)
  • public static Nullable <Double> Min (questa sorgente IEnumerable <Nullable <Double >>)
  • public static Nullable <Int32> Min (questa sorgente IEnumerable <Nullable <Int32 >>)
  • public static Nullable <Int64> Min (questa sorgente IEnumerable <Nullable <Int64 >>)
  • statico pubblico Nullable <Singolo> Min (questo oggetto IEnumerable <Nullable <Single >>)
  • Single Min statico pubblico (questa origine IEnumerable <Single>)
  • public static TSource Min <TSource> (questa origine IEnumerable <TSource>)
  • public static Decimal Min <TSource> (questo selettore IEnumerable <TSource>, Func <TSource, Decimal>)
  • public static Double Min <TSource> (questo sorgente IEnumerable <TSource>, Func <TSource, Double>)
  • public static Int32 Min <TSource> (questo sorgente IEnumerable <TSource>, Func <TSource, Int32>)
  • public static Int64 Min <TSource> (questo selettore IEnumerable <TSource>, Func <TSource, Int64>)
  • public static Nullable <Decimal> Min <TSource> (questo sorgente IEnumerable <Origine TS, Func <TSource, Nullable <Decimale >>)
  • public static Nullable <Double> Min <TSource> (questa sorgente IEnumerable <TSource>, Func <TSource, Nullable <Double >>)
  • public static Nullable <Int32> Min <TSource> (questo sorgente IEnumerable <Origine TS, Func <TSource, Nullable <Int32 >>)
  • public static Nullable <Int64> Min <TSource> (questo IEnumerable <Origine TSource> Func <TSource, Nullable <Int64 >> selector)
  • public static Nullable <Single> Min <TSource> (questo sorgente IEnumerable <TSource>, Func <TSource, Nullable <Single >>)
  • public static Single Min <TSource> (questo sorgente IEnumerable <TSource>, Func <TSource, Single>)
  • pubblico statico TResult Min <TSource, TResult> (questo sorgente IEnumerable <TSource>, Func <TSource, TResult>)
  • public static IEnumerable <TResult> OfType <TResult> (questa sorgente IEnumerable)
  • public static IOrderedEnumerable <TSource> OrderBy <TSource, TKey> (questa sorgente IEnumerable <TSource>, Func <TSource, TKey> keySelector)
  • public static IOrderedEnumerable <TSource> OrderBy <TSource, TKey> (questa sorgente IEnumerable <TSource>, Func <TSource, TKey> keySelector, IComparer <TKey> comparer)
  • public static IOrderedEnumerable <TSource> OrderByDescending <TSource, TKey> (questa sorgente IEnumerable <TSource>, Func <TSource, TKey> keySelector)
  • public static IOrderedEnumerable <TSource> OrderByDescending <TSource, TKey> (questa sorgente IEnumerable <TSource>, Func <TSource, TKey> keySelector, IComparer <TKey> comparer)
  • Intervallo pubblico IEnumerable <Int32> public (Int32 start, Int32 count)
  • public static IEnumerable <TResult> Repeat <TResult> (elemento TResult, numero Int32)
  • public static IEnumerable <TSource> Reverse <TSource> (questa sorgente IEnumerable <TSource>)
  • public static IEnumerable <TResult> Seleziona <TSource, TResult> (questo sorgente IEnumerable <TSource>, Func <TSource, TResult>)
  • public static IEnumerable <TResult> Seleziona <TSource, TResult> (questo sorgente IEnumerable <TSource>, Func <TSource, Int32, TResult>)
  • public static IEnumerable <TResult> SelectMany <TSource, TResult> (questo sorgente IEnumerable <TSource>, Func <TSource, IEnumerable <TResult >>)
  • public static IEnumerable <TResult> SelectMany <TSource, TResult> (questo sorgente IEnumerable <TSource>, Func <TSource, Int32, IEnumerable <TResult >>)
  • public static IEnumerable <TResult> SelectMany <TSource, TCollection, TResult> (questa sorgente IEnumerable <TSource>, Func <TSource, IEnumerable <TCollection >> collectionSelector, Func <TSource, TCollection, TResult> resultSelector)
  • public static IEnumerable <TResult> SelectMany <TSource, TCollection, TResult> (questa sorgente IEnumerable <TSource>, Func <TSource, Int32, IEnumerable <TCollection >> collectionSelector, Func <TSource, TCollection, TResult> resultSelector)
  • public static Boolean SequenceEqual <TSource> (questo IEnumerable <TSource> first, IEnumerable <TSource> second)
  • public static Boolean SequenceEqual <TSource> (questo IEnumerable <TSource> first, IEnumerable <TSource> secondo, IEqualityComparer <TSource> comparer)
  • public static TSource Single <TSource> (questa sorgente IEnumerable <TSource>)
  • public static TSource Single <TSource> (questo predicato IEnumerable <TSource> source, Func <TSource, Boolean>)
  • public static TSource SingleOrDefault <TSource> (questa origine IEnumerable <TSource>)
  • public static TSource SingleOrDefault <TSource> (questo predicato IEnumerable <TSource> source, Func <TSource, Boolean>)
  • public static IEnumerable <TSource> Salta <TSource> (questa sorgente IEnumerable <TSource>, conteggio Int32)
  • public static IEnumerable <TSource> SkipWhile <TSource> (questo predicato IEnumerable <TSource>, Func <TSource, Boolean>)
  • statico pubblico IEnumerable <TSource> SkipWhile <TSource> (questo predicato IEnumerable <TSource>, Func <TSource, Int32, Boolean>)
  • Somma decimale statica pubblica (questa origine IEnumerable <Decimal>)
  • Double Sum statico pubblico (questa origine <Double> di IEnumerable)
  • Somma Int32 statica pubblica (questa origine IEnumerable <Int32>)
  • Somma Int64 statica pubblica (questa origine IEnumerable <Int64>)
  • Sommario <decimale> Nullable statico pubblico (questa origine IEnumerable <Nullable <Decimal >>)
  • public static Nullable <Double> Sum (this IEnumerable <Nullable <Double >> source)
  • Somma statica pubblica Nullable <Int32> (questa origine IEnumerable <Nullable <Int32 >>)
  • Somma statica pubblica Nullable <Int64> (questa origine IEnumerable <Nullable <Int64 >>)
  • public static Nullable <Single> Sum (this IEnumerable <Nullable <Single >> source)
  • Somma statica pubblica singola (questa origine IEnumerable <Single>)
  • Somma decimale statica pubblica <TSource> (questo selettore IEnumerable <TSource>, Func <TSource, Decimal>)
  • Double Sum statico pubblico <TSource> (questo sorgente IEnumerable <Origine TSource, Func <TSource, Double>)
  • Somma Intica statica pubblica <TSource> (questo sorgente IEnumerable <Origine TSource, Func <TSource, Int32>)
  • Somma Int64 statica pubblica <TSource> (questo selettore IEnumerable <TSource>, Func <TSource, Int64>)
  • public static Nullable <Decimal> Sum <TSource> (questo IEnumerable <Origine TSource, Func <TSource, Nullable <Decimale >> Selettore)
  • public static Nullable <Double> Sum <TSource> (questa sorgente IEnumerable <TSource>, Func <TSource, Nullable <Double >>)
  • public static Nullable <Int32> Sum <TSource> (questo IEnumerable <Origine TSource> Func <TSource, Nullable <Int32 >> selector)
  • public static Nullable <Int64> Sum <TSource> (questo componente IEnumerable <TSource>, Func <TSource, Nullable <Int64 >>)
  • public static Nullable <Single> Sum <TSource> (questo sorgente IEnumerable <TSource>, Func <TSource, Nullable <Single >>)
  • Somma statica pubblica singola <TSource> (questo selettore IEnumerable <TSource>, Func <TSource, Single>)
  • public static IEnumerable <TSource> Take <TSource> (questa sorgente IEnumerable <TSource>, conteggio Int32)
  • public static IEnumerable <TSource> TakeWhile <TSource> (questo predicato IEnumerable <TSource> source, Func <TSource, Boolean>)
  • public static IEnumerable <TSource> TakeWhile <TSource> (questo predicato IEnumerable <TSource>, Func <TSource, Int32, Boolean>)
  • public static IOrderedEnumerable <TSource> ThenBy <TSource, TKey> (questa sorgente IOrderedEnumerable <TSource>, Func <TSource, TKey> keySelector)
  • public static IOrderedEnumerable <TSource> ThenBy <TSource, TKey> (questa sorgente IOrderedEnumerable <TSource>, Func <TSource, TKey> keySelector, IComparer <TKey> comparer)
  • public static IOrderedEnumerable <TSource> ThenByDescending <TSource, TKey> (questa sorgente IOrderedEnumerable <TSource>, Func <TSource, TKey> keySelector)
  • public static IOrderedEnumerable <TSource> ThenByDescending <TSource, TKey> (questa sorgente IOrderedEnumerable <TSource>, Func <TSource, TKey> keySelector, IComparer <TKey> comparer)
  • public static TSource [] ToArray <TSource> (questa sorgente IEnumerable <TSource>)
  • Dizionario statico pubblico <TKey, TSource> ToDictionary <TSource, TKey> (questa sorgente IEnumerable <TSource>, Func <TSource, TKey> keySelector)
  • Dizionario statico pubblico <TKey, TSource> ToDictionary <TSource, TKey> (questa sorgente IEnumerable <TSource>, Func <TSource, TKey> keySelector, IEqualityComparer <TKey> comparer)
  • Dizionario statico pubblico <TKey, TElement> ToDictionary <TSource, TKey, TElement> (questa sorgente IEnumerable <TSource>, Func <TSource, TKey> keySelector, Func <TSource, TElement> elementSelector)
  • Dizionario statico pubblico <TKey, TElement> ToDictionary <TSource, TKey, TElement> (questa sorgente IEnumerable <TSource>, Func <TSource, TKey> keySelector, Func <TSource, TElement> elementSelector, IEqualityComparer <TKey> comparer)
  • elenco statico pubblico <TSource> ToList <TSource> (questa origine IEnumerable <TSource>)
  • public static ILookup <TKey, TSource> ToLookup <TSource, TKey> (questa sorgente IEnumerable <TSource>, Func <TSource, TKey> keySelector)
  • public static ILookup <TKey, TSource> ToLookup <TSource, TKey> (questa sorgente IEnumerable <TSource>, Func <TSource, TKey> keySelector, IEqualityComparer <TKey> comparer)
  • public static ILookup <TKey, TElement> ToLookup <TSource, TKey, TElement> (questa sorgente IEnumerable <TSource>, Func <TSource, TKey> keySelector, Func <TSource, TElement> elementSelector)
  • public static ILookup <TKey, TElement> ToLookup <TSource, TKey, TElement> (questa sorgente IEnumerable <TSource>, Func <TSource, TKey> keySelector, Func <TSource, TElement> elementSelector, IEqualityComparer <TKey> comparer)
  • public static IEnumerable <TSource> Union <TSource> (questo IEnumerable <TSource> first, IEnumerable <TSource> second)
  • public static IEnumerable <TSource> Union <TSource> (questo IEnumerable <TSource> first, IEnumerable <TSource> secondo, IEqualityComparer <TSource> comparer)
  • public static IEnumerable <TSource> Dove <TSource> (questo sorgente IEnumerable <TSource>, Func <TSource, Boolean>)
  • public static IEnumerable <TSource> Dove <TSource> (questo sorgente IEnumerable <TSource>, Func <TSource, Int32, Boolean>)
  • public static IEnumerable <TResult> Zip <TFirst, TSecond, TResult> (questo IEnumerable <TFirst> primo, IEnumerable <TSecond> secondo, Func <TFirst, TSecond, TResult> resultSelector)

Osservazioni

I metodi integrati LINQ sono metodi di estensione per l'interfaccia IEnumerable<T> che risiedono nella classe System.Linq.Enumerable nell'assembly System.Core . Sono disponibili in .NET Framework 3.5 e versioni successive.

LINQ consente la modifica, la trasformazione e la combinazione di vari IEnumerable usando una sintassi di tipo query o funzionale.

Mentre i metodi LINQ standard possono funzionare su qualsiasi IEnumerable<T> , compresi gli array semplici e List<T> s, possono essere utilizzati anche su oggetti di database, in cui l'insieme di espressioni LINQ può essere trasformato in molti casi in SQL se il l'oggetto dati lo supporta. Vedi LINQ to SQL .

Per i metodi che confrontano gli oggetti (come Contains ed Except ), IEquatable<T>.Equals viene utilizzato se il tipo T della raccolta implementa tale interfaccia. In caso contrario, vengono utilizzati gli standard Equals e GetHashCode del tipo (eventualmente sovrascritti dalle implementazioni Object predefinite). Esistono anche sovraccarichi per questi metodi che consentono di specificare un IEqualityComparer<T> personalizzato IEqualityComparer<T> .

Per i metodi ...OrDefault , il default(T) viene utilizzato per generare valori predefiniti.

Riferimento ufficiale: classe enumerabile

Valutazione pigra

Praticamente ogni query che restituisce un IEnumerable<T> non viene valutata immediatamente; invece, la logica viene ritardata fino a quando la query non viene ripetuta. Una implicazione è che ogni volta che qualcuno esegue un'iterazione su un oggetto IEnumerable<T> creato da una di queste query, ad esempio, .Where() , viene ripetuta la logica di query completa. Se il predicato è di lunga durata, ciò può essere causa di problemi di prestazioni.

Una soluzione semplice (quando si conosce o può controllare la dimensione approssimativa della sequenza risultante) consiste nel bufferizzare completamente i risultati utilizzando .ToArray() o .ToList() . .ToDictionary() o .ToLookup() può svolgere lo stesso ruolo. Si può anche, ovviamente, iterare sull'intera sequenza e bufferizzare gli elementi secondo un'altra logica personalizzata.

ToArray() o ToList() ?

Sia .ToArray() che .ToList() ciclo di tutti gli elementi di una sequenza I IEnumerable<T> .ToList() IEnumerable<T> e salvano i risultati in una raccolta archiviata in memoria. Utilizzare le seguenti linee guida per determinare quale scegliere:

  • Alcune API potrebbero richiedere un T[] o un List<T> .
  • .ToList() genere gira più velocemente e genera meno garbage di .ToArray() , perché quest'ultimo deve copiare tutti gli elementi in una nuova raccolta di dimensioni fisse ancora una volta rispetto al primo, in quasi tutti i casi.
  • Gli elementi possono essere aggiunti o rimossi dall'elenco List<T> restituito da .ToList() , mentre il T[] restituito da .ToArray() rimane una dimensione fissa per tutta la sua durata. In altre parole, List<T> è mutabile e T[] è immutabile.
  • Il T[] restituito da .ToArray() utilizza meno memoria rispetto a List<T> restituito da .ToList() , quindi se il risultato verrà memorizzato per un lungo periodo, preferisci .ToArray() . Calling List<T>.TrimExcess() renderebbe la differenza di memoria strettamente accademica, al costo di eliminare il vantaggio relativo della velocità di .ToList() .

LINQ Esempi correlati