共用方式為


HOW TO:處理查詢運算式中的 Null 值 (C# 程式設計手冊)

這個範例會示範如何處理來源集合中的可能 null 值。IEnumerable<T> 一類的物件集合可以包含其值為 null 的項目。如果來源集合為 null,或是包含值為 null 的項目,而且您的查詢不會處理 null 值,這樣當您執行該查詢時,便會擲回 NullReferenceException

範例

您可以用防禦方式來撰寫程式碼,以避免發生下列範例中所示的 null 參考例外狀況 (Exception):

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 子句會篩選掉分類序列 (Sequence) 中的所有 null 項目。這項技巧與 join 子句中的 null 檢查無關。在此範例中具有 null 值的條件運算式可以運作,因為 Products.CategoryID 的型別為 int?,而這是 Nullable<int> 的簡略表示法。

在 join 子句中,如果只有一個比較索引鍵是可為 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 };
}

請參閱

參考

可為 Null 的型別 (C# 程式設計手冊)

Nullable<T>

概念

LINQ 查詢運算式 (C# 程式設計手冊)