linq 在查询表达式中处理 null 值

本文介绍如何在LINQ查询中处理可能存在的null值,通过示例展示了如何避免因null值导致的NullReferenceException异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此示例显示如何在源集合中处理可能的 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 };
}

 

转载于:https://www.cnblogs.com/dehuachenyunfei/p/7776819.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值