Aracılığıyla paylaş


LINQ'de niceleyici işlemleri (C#)

Niceleyici işlemleri, bir Boolean dizideki öğelerin bazılarının veya tümünün bir koşulu karşılayıp karşılamadığını belirten bir değer döndürür.

Ö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 iki farklı kaynak dizisinde iki farklı niceleyici işlemi gösterilmektedir. İlk işlem, öğelerden herhangi birinin 'A' karakteri olup olmadığını sorar. İkinci işlem, tüm öğelerin 'A' karakteri olup olmadığını sorar. Her iki yöntem de bu örnekte döndürülmektedir true .

LINQ Quantifier İşlemleri

Yöntem Adı Açıklama C# Sorgu İfadesi Söz Dizimi Daha Fazla Bilgi
Tümü Bir dizideki tüm öğelerin bir koşulu karşılayıp karşılamadığını belirler. Uygulanamaz. Enumerable.All
Queryable.All
Herhangi biri Bir dizideki öğelerin bir koşulu karşılayıp karşılamadığını belirler. Uygulanamaz. Enumerable.Any
Queryable.Any
İçerir Bir dizinin belirtilen öğeyi içerip içermediğini belirler. Uygulanamaz. Enumerable.Contains
Queryable.Contains

Tümü

Aşağıdaki örnek, tüm sınavlarda 70'in üzerinde puan alan öğrencileri bulmak için öğesini All kullanır.

Uyarı

Standart Sorgu İşleçlerine Genel Bakış makalesinde bu alanın ortak veri kaynaklarına bakabilirsiniz.

IEnumerable<string> names = from student in students
                            where student.Scores.All(score => score > 70)
                            select $"{student.FirstName} {student.LastName}: {string.Join(", ", student.Scores.Select(s => s.ToString()))}";

foreach (string name in names)
{
    Console.WriteLine($"{name}");
}

// This code produces the following output:
//
// Cesar Garcia: 71, 86, 77, 97
// Nancy Engström: 75, 73, 78, 83
// Ifunanya Ugomma: 84, 82, 96, 80

Herhangi biri

Aşağıdaki örnek, herhangi bir sınavda Any 95'ten fazla puan alan öğrencileri bulmak için öğesini kullanır.

IEnumerable<string> names = from student in students
                            where student.Scores.Any(score => score > 95)
                            select $"{student.FirstName} {student.LastName}: {student.Scores.Max()}";

foreach (string name in names)
{
    Console.WriteLine($"{name}");
}

// This code produces the following output:
//
// Svetlana Omelchenko: 97
// Cesar Garcia: 97
// Debra Garcia: 96
// Ifeanacho Jamuike: 98
// Ifunanya Ugomma: 96
// Michelle Caruana: 97
// Nwanneka Ifeoma: 98
// Martina Mattsson: 96
// Anastasiya Sazonova: 96
// Jesper Jakobsson: 98
// Max Lindgren: 96

İçerir

Aşağıdaki örnek, bir sınavda Contains tam olarak 95 puan alan öğrencileri bulmak için öğesini kullanır.

IEnumerable<string> names = from student in students
                            where student.Scores.Contains(95)
                            select $"{student.FirstName} {student.LastName}: {string.Join(", ", student.Scores.Select(s => s.ToString()))}";

foreach (string name in names)
{
    Console.WriteLine($"{name}");
}

// This code produces the following output:
//
// Claire O'Donnell: 56, 78, 95, 95
// Donald Urquhart: 92, 90, 95, 57

Ayrıca bakınız