方法 : クエリ式の null 値を処理する (C# プログラミング ガイド)
この例は、ソース コレクション内の 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 };
}