English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Operatori di partizione LINQ Take & TakeWhile

L'operatore di partizione divide una sequenza (raccolta) in due parti e restituisce una di esse.

Take

Il metodo estensione Take() restituisce un numero specificato di elementi a partire dal primo elemento.

IList<string> strList = new List<string>(){ "One", "Two", "Three", "Four", "Five" };
var newList = strList.Take(2);
foreach(var str in newList)
    Console.WriteLine(str);
输出:
Uno
Due

La sintassi di query di C# non supporta gli operatori Take & TakeWhile. Tuttavia, è possibile utilizzare il metodo Take/takedwhile per la variabile di query o incapsulare l'intera query tra parentesi, quindi chiamare Take/takedwhile ().

Dim takeResult = From s In studentList
                 Take 3
                 Select s

TakeWhile

Il metodo estensione TakeWhile() restituisce gli elementi della raccolta fornita fino a quando la condizione specificata non è true. Se il primo elemento non soddisfa la condizione, viene restituita una raccolta vuota.

TakeWhile metodo ha due sovraccarichi. Uno accetta un predicato di tipo Func<TSource, bool>, e l'altro accetta un predicato di tipo Func<TSource, int, bool> che passa l'indice dell'elemento.

Nel esempio seguente, il metodo TakeWhile() restituisce una nuova collezione che contiene tutti gli elementi fino a quando non si trova una stringa con lunghezza minore di 4 caratteri.

Esempio: TakeWhile metodo in C# restituisce elementi di stringa con lunghezza maggiore di 4

IList<string> strList = new List<string>() { 
                                            "Tre", 
                                            "Quattro", 
                                            "Cinque", 
                                            "Centotto"};
var result = strList.TakeWhile(s => s.Length > 4);
foreach(string str in result)
        Console.WriteLine(str);
输出:
Tre

Nel esempio sopra, TakeWhile() restituisce una collezione che contiene solo l'elemento primo, perché il secondo elemento della stringa non soddisfa questa condizione.

TakeWhile passa anche l'indice dell'elemento corrente alla funzione di predicato. Ecco un esempio di TakeWhile che accetta elementi fino a quando la lunghezza della stringa dell'elemento è maggiore dell'indice

Esempio: Passaggio dell'indice alla TakeWhile in C# per restituire elementi di stringa con lunghezza maggiore dell'indice
IList<string> strList = new List<string>() { 
                                            "Uno", 
                                            "Due", 
                                            "Tre", 
                                            "Quattro", 
                                            "Cinque", 
                                            "Sei"};
var resultList = strList.TakeWhile((s, i) => s.Length > i);
foreach(string str in resultList)
        Console.WriteLine(str);
输出:
Uno
Due
Tre
Quattro