Linq to SQL在访问属性之前检查对象是否为空

时间:2019-01-21 09:42:07

标签: c# entity-framework linq

简单来说,我的代码是否有更好的方法? (检查下面的代码)。

详细信息:
在LINQ to SQL中,我有一个包含一些内部查询的查询。在该内部查询中,我使用了FirstOrDefault(),因此现在我要检查FirstOrDefault()是否返回任何空值,然后我就可以访问属性。

var Bills = db.BillMasters.Select(x => new BillHomeViewModel {
            ConsumerCategory = db.ConsumerCategories.FirstOrDefault(c => c.ID == x.ConsumerCategory) == null ? String.Empty : db.ConsumerCategories.FirstOrDefault(c => c.ID == x.ConsumerCategory).CategoryName                
        });

1 个答案:

答案 0 :(得分:4)

您可以使用DefaultIfEmpty来避免实体框架不支持的三元运算符

var Bills = db.BillMasters
.Select(x => new BillHomeViewModel
{
    ConsumerCategory = db.ConsumerCategories
        .Where(c => c.ID == x.ConsumerCategory)
        .Select(c => c.CategoryName)
        .DefaultIfEmpty("")
        .FirstOrDefault()
});