此示例显示如何在源集合中处理可能的 null 值。 IEnumerable<T> 等对象集合可包含值为 null 的元素。 如果源集合为 null 或包含值为 null 的元素,并且查询不处理 null 值,则在执行查询时将引发 NullReferenceException。
可采用防御方式进行编码,以避免空引用异常,如以下示例所示:
var query1 = from c in categories where c != null join p in products on c.ID equals p.CategoryID select new { Category = c.Name, Name = p.Name };
在前面的示例中,where
子句筛选出类别序列中的所有 null 元素。
在 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 }; }
时间: 2024-11-06 12:45:09