Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
LINQ'de bölümleme, öğeleri yeniden düzenlemeden ve sonra bölümlerden birini döndürmeden bir giriş dizisini iki bölüme bölme işlemini ifade eder.
Önemli
Bu örnekler bir System.Collections.Generic.IEnumerable<T> veri kaynağı kullanır.
System.Linq.IQueryProvider tabanlı veri kaynakları, System.Linq.IQueryable<T> veri kaynakları ve ifade ağaçları kullanır. İfade ağaçlarının izin verilen C# söz diziminde sınırlamaları vardır. Ayrıca IQueryProvider gibi her veri kaynağı daha fazla kısıtlama uygulayabilir. Veri kaynağınızın belgelerine bakın.
Aşağıdaki çizimde, bir dizi karakter üzerinde üç farklı bölümleme işleminin sonuçları gösterilmektedir. İlk işlem, dizideki ilk üç öğeyi döndürür. İkinci işlem ilk üç öğeyi atlar ve kalan öğeleri döndürür. Üçüncü işlem, dizideki ilk iki öğeyi atlar ve sonraki üç öğeyi döndürür.
Dizileri bölümleyen standart sorgu işleç yöntemleri aşağıdaki bölümde listelenmiştir.
Operatörler
| Yöntem adları | Açıklama | C# sorgu ifadesi söz dizimi | Daha fazla bilgi |
|---|---|---|---|
| Atlamak | Öğeleri bir dizide belirtilen konuma kadar atlar. | Uygulanamaz. | Enumerable.Skip Queryable.Skip |
| Bu Arada Atla | Bir öğe koşulu karşılamayana kadar koşul işlevini temel alan öğeleri atlar. | Uygulanamaz. | Enumerable.SkipWhile Queryable.SkipWhile |
| Almak | Öğeleri bir dizide belirtilen konuma kadar alır. | Uygulanamaz. | Enumerable.Take Queryable.Take |
| Bu Arada | Bir öğe koşulu karşılamayana kadar koşul işlevini temel alan öğeleri alır. | Uygulanamaz. | Enumerable.TakeWhile Queryable.TakeWhile |
| Öbek | Bir dizinin öğelerini belirtilen en büyük boyuttaki öbeklere böler. | Uygulanamaz. | Enumerable.Chunk Queryable.Chunk |
Aşağıdaki örneklerin tümü, 0 ile 7 arasında bir sayı dizisi oluşturmak için kullanılır Enumerable.Range(Int32, Int32) .
Uyarı
Standart Sorgu İşleçlerine Genel Bakış makalesinde bu alanın ortak veri kaynaklarına bakabilirsiniz.
Bir dizide yalnızca ilk öğeleri almak için Take yöntemini kullanırsınız.
foreach (int number in Enumerable.Range(0, 8).Take(3))
{
Console.WriteLine(number);
}
// This code produces the following output:
// 0
// 1
// 2
Bir dizideki ilk öğeleri atlamak ve kalan öğeleri kullanmak için Skip yöntemini kullanırsınız.
foreach (int number in Enumerable.Range(0, 8).Skip(3))
{
Console.WriteLine(number);
}
// This code produces the following output:
// 3
// 4
// 5
// 6
// 7
TakeWhile ve SkipWhile yöntemleri de bir dizideki öğeleri alır ve atlar. Ancak, bu yöntemler belirli sayıda öğe yerine bir koşula göre öğeleri atlar veya alır.
TakeWhile bir öğe koşulla eşleşmeyene kadar bir dizinin öğelerini alır.
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 koşul true olduğu sürece ilk öğeleri atlar. Koşulla eşleşmeyen ilk öğe ve sonraki tüm öğeler döndürülür.
foreach (int number in Enumerable.Range(0, 8).SkipWhile(n => n < 5))
{
Console.WriteLine(number);
}
// This code produces the following output:
// 5
// 6
// 7
Chunk işleci, belirli sizebir temelinde bir dizinin öğelerini bölmek için kullanılır.
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
Yukarıdaki C# kodu:
- Enumerable.Range(Int32, Int32) üzerine sayı dizisi üretmeye dayanır.
- İşleci uygular
Chunkve sırayı en büyük boyutu üç olan öbeklere böler.