Dělení dat (C#)
Dělení v LINQ odkazuje na operaci rozdělení vstupní sekvence do dvou oddílů, aniž by se přeuspořádaly prvky a pak vrátily jeden z oddílů.
Následující obrázek znázorňuje výsledky tří různých operací dělení na posloupnost 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.
Standardní metody operátoru dotazu, které sekvence oddílů jsou uvedeny v následující části.
Operátory
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. | Nevztahuje se. | Enumerable.Skip Queryable.Skip |
Skipwhile | Přeskočí prvky založené na predikátové funkci, dokud prvek nesplňuje podmínku. | Nevztahuje se. | Enumerable.SkipWhile Queryable.SkipWhile |
Take | Přebírá prvky až do zadané pozice v sekvenci. | Nevztahuje se. | Enumerable.Take Queryable.Take |
Takewhile | Přebírá prvky založené na predikátové funkci, dokud prvek nesplňuje podmínku. | Nevztahuje se. | Enumerable.TakeWhile Queryable.TakeWhile |
Blok dat | Rozdělí prvky sekvence na bloky zadané maximální velikosti. | Nevztahuje se. | 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 pořízení pouze prvních prvků v sekvenci:
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
Tyto TakeWhile
metody SkipWhile
také přebírají a přeskočí 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) vygenerování posloupnosti čísel.
Chunk
Použije operátor, který rozdělí sekvenci na bloky dat s maximální velikostí tří.
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro