LINQ を使用した C# でのデータのフィルター処理
フィルター処理とは、特定の条件を満たす要素のみが含まれるように結果セットを限定する操作のことです。 これは、指定した条件に一致する要素の "選択" とも呼ばれます。
重要
これらのサンプルでは、System.Collections.Generic.IEnumerable<T> データ ソースを使用します。 System.Linq.IQueryProvider に基づくデータ ソースでは、System.Linq.IQueryable<T> データ ソースと式ツリーが使用されます。 式ツリーには、許可される C# 構文に制限があります。 さらに、EF Core などの各 IQueryProvider
データ ソースでは、より多くの制限が課される場合があります。 ご利用のデータ ソースのドキュメントをご覧ください。
次の図は、文字のシーケンスをフィルター処理した結果を示したものです。 フィルター処理操作の述語では、文字が "A" でなければならないことが指定されています。
次のテーブルでは、選択を実行する標準クエリ演算子メソッドの一覧を示します。
メソッド名 | 説明 | C# のクエリ式の構文 | 説明 |
---|---|---|---|
OfType | 指定した型にキャストできるかどうかにより、値を選択します。 | 該当なし。 | Enumerable.OfType Queryable.OfType |
Where | 述語関数に基づいて値を選択します。 | where |
Enumerable.Where Queryable.Where |
次の例では、where
句を使って、配列から特定の長さを持つ文字列をフィルター処理します。
string[] words = ["the", "quick", "brown", "fox", "jumps"];
IEnumerable<string> query = from word in words
where word.Length == 3
select word;
foreach (string str in query)
{
Console.WriteLine(str);
}
/* This code produces the following output:
the
fox
*/
次のコードでは、メソッド構文を使用した同等のクエリを示しています。
string[] words = ["the", "quick", "brown", "fox", "jumps"];
IEnumerable<string> query =
words.Where(word => word.Length == 3);
foreach (string str in query)
{
Console.WriteLine(str);
}
/* This code produces the following output:
the
fox
*/
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET