LINQ での量指定子操作 (C#)
量指定子操作は、シーケンス内の要素の一部またはすべてが条件を満たしているかどうかを示す Boolean 値を返します。
次の図は、2 つの異なるソース シーケンスに対する、2 つの異なる量指定子操作を示しています。 最初の操作では、いずれかの要素が文字 'A' であるか尋ねられます。 次の操作では、すべての要素が文字 'A' であるか尋ねられます。 この例では、両方のメソッドで true
が返されます。
メソッド名 | 説明 | C# のクエリ式の構文 | 説明 |
---|---|---|---|
すべて | シーケンス内のすべての要素が条件を満たしているかどうかを調べます。 | 該当なし。 | Enumerable.All Queryable.All |
どれでも可 | シーケンス内のいずれかの要素が条件を満たしているかどうかを調べます。 | 該当なし。 | Enumerable.Any Queryable.Any |
内容 | 指定した要素がシーケンスに格納されているかどうかを調べます。 | 該当なし。 | Enumerable.Contains Queryable.Contains |
すべて
次の例は、All
を使用してすべての試験で 70 を超えるスコアを付けた学生を検索しています。
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
任意
次の例は、Any
を使用して試験で 96 を超えるスコアを付けた学生を検索しています。
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
内容
次の例は、Contains
を使用して試験でちょうど 95 のスコアを付けた学生を検索しています。
// Determine which market contains fruit names equal 'kiwi'
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
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET
フィードバック
https://aka.ms/ContentUserFeedback。
近日公開予定: 2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub イシューを段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、以下を参照してください:フィードバックの送信と表示