更新:2007 年 11 月
此示例演示如何处理源集合中可能的 null 值。诸如
示例
您可以采用防御方式进行编码以避免 null 引用异常,如下面的示例中所示:
C# | 复制代码 |
---|---|
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 子句中,只要其中一个比较键为可 null 的类型,您就可以在查询表达式中将另一个比较键强制转换为可译为 null 的类型。在下面的示例中,假定 EmployeeID 是一个列,其中包含类型为 int? 的值:
C# | 复制代码 |
---|---|
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 }; } |