Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Rozdělení na části v LINQ odkazuje na operaci rozdělení vstupní posloupnosti do dvou částí, aniž by se přeuspořádaly prvky, a následné vrácení jedné části.
Důležité
Tyto ukázky používají zdroj dat System.Collections.Generic.IEnumerable<T>. Zdroje dat, které jsou založené na System.Linq.IQueryProvider, používají zdroje dat System.Linq.IQueryable<T> a stromy výrazů . Stromy výrazů mají omezení povolené syntaxe jazyka C#. Každý zdroj dat IQueryProvider
, například EF Core, může navíc uplatňovat další omezení. Projděte si dokumentaci ke zdroji dat.
Následující obrázek ukazuje výsledky tří různých operací částění na sekvenci znaků. První operace vrátí první tři prvky v sekvenci. Druhá operace přeskočí první tři prvky a vrátí zbývající prvky. Třetí operace přeskočí první dva prvky v sekvenci a vrátí další tři prvky.
Metody operátorů standardního dotazu, které rozdělují sekvence, jsou uvedeny v následující části.
Operátoři
Názvy metod | Popis | Syntaxe výrazu dotazu jazyka C# | Více informací |
---|---|---|---|
Přeskočit | Přeskočí prvky až na zadanou pozici v sekvenci. | Nelze použít. | Enumerable.Skip Queryable.Skip |
Přeskočit dokud | Přeskočí prvky založené na predikátové funkci, dokud prvek nesplňuje podmínku. | Nelze použít. | Enumerable.SkipWhile Queryable.SkipWhile |
Vezměte | Přebírá prvky až do zadané pozice v sekvenci. | Nelze použít. | Enumerable.Take Queryable.Take |
Chvíli trvat | Přebírá prvky založené na predikátové funkci, dokud prvek nesplňuje podmínku. | Nelze použít. | Enumerable.TakeWhile Queryable.TakeWhile |
Blok dat | Rozdělí prvky sekvence na bloky zadané maximální velikosti. | Nelze použít. | Enumerable.Chunk Queryable.Chunk |
Všechny následující příklady slouží Enumerable.Range(Int32, Int32) k vygenerování posloupnosti čísel od 0 do 7.
Metodu Take
použijete k získání prvních prvků v sekvenci pouze:
foreach (int number in Enumerable.Range(0, 8).Take(3))
{
Console.WriteLine(number);
}
// This code produces the following output:
// 0
// 1
// 2
Pomocí Skip
metody můžete přeskočit první prvky v sekvenci a použít zbývající prvky:
foreach (int number in Enumerable.Range(0, 8).Skip(3))
{
Console.WriteLine(number);
}
// This code produces the following output:
// 3
// 4
// 5
// 6
// 7
Metody TakeWhile
a SkipWhile
také vybírají a vynechávají prvky v sekvenci. Místo nastaveného počtu prvků však tyto metody přeskočí nebo přebírají prvky na základě podmínky.
TakeWhile
přebírá prvky sekvence, dokud prvek neodpovídá podmínce.
foreach (int number in Enumerable.Range(0, 8).TakeWhile(n => n < 5))
{
Console.WriteLine(number);
}
// This code produces the following output:
// 0
// 1
// 2
// 3
// 4
SkipWhile
přeskočí první prvky, pokud je podmínka pravdivá. První prvek neodpovídá podmínce a vrátí se všechny následné prvky.
foreach (int number in Enumerable.Range(0, 8).SkipWhile(n => n < 5))
{
Console.WriteLine(number);
}
// This code produces the following output:
// 5
// 6
// 7
Operátor Chunk
se používá k rozdělení prvků sekvence na základě daného size
.
int chunkNumber = 1;
foreach (int[] chunk in Enumerable.Range(0, 8).Chunk(3))
{
Console.WriteLine($"Chunk {chunkNumber++}:");
foreach (int item in chunk)
{
Console.WriteLine($" {item}");
}
Console.WriteLine();
}
// This code produces the following output:
// Chunk 1:
// 0
// 1
// 2
//
//Chunk 2:
// 3
// 4
// 5
//
//Chunk 3:
// 6
// 7
Předchozí kód jazyka C#:
- Spoléhá na Enumerable.Range(Int32, Int32) k vytvoření posloupnosti čísel.
-
Chunk
Použije operátor, který rozdělí sekvenci na bloky dat s maximální velikostí tří.