方法 : クエリ式の null 値を処理する (C# プログラミング ガイド)

更新 : 2007 年 11 月

この例は、ソース コレクション内の null である可能性がある値を処理する方法を示しています。IEnumerable<T> などのオブジェクト コレクションには、値が null の要素を含めることができます。ソース コレクションが null である場合や値が null の要素がソース コレクションに含まれる場合にクエリが null 値を処理していなければ、クエリを実行すると NullReferenceException がスローされます。

使用例

次の例に示すように、防御的にコーディングすることにより、null 参照の例外を回避できます。

var query1 =
    from c in categories
    where c != null
    join p in products on c.ID equals
        (p == null ? null : p.CategoryID)
    select new { Category = c.Name, Name = p.Name };

この例では、where 句がカテゴリ シーケンスに含まれるすべての null 要素をフィルタで除外します。この手法は join 句での null チェックとは無関係です。この例の null を含む条件式は正常に機能します。Products.CategoryID は int? 型であり、この型は Nullable<int> の省略表現であるためです。

join 句では、比較キーのうちの 1 つだけが null 許容値型である場合、残りのキーをクエリ式で null 許容型にキャストできます。次の例の EmployeeID は、int? 型の値を含む列とします。

void TestMethod(Northwind db)
{
    var query =
        from o in db.Orders
        join e in db.Employees
            on o.EmployeeID equals (int?)e.EmployeeID
        select new { o.OrderID, e.FirstName };
}

参照

処理手順

LINQ to Northwind のサンプル

概念

LINQ クエリ式 (C# プログラミング ガイド)

参照

null 許容型 (C# プログラミング ガイド)

Nullable<T>