c# - Linq to SQL 在访问属性之前检查对象上的空值

标签 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                
        });

最佳答案

您可以使用 DefaultIfEmpty避免 Entity Framework 不支持的三元运算符

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

关于c# - Linq to SQL 在访问属性之前检查对象上的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54287113/

相关文章:

c# - 转换表单 EF4 到 EF5 转换新创建

c# - 如何在 LINQ 中查询基于链接表的数据

c# - 如何使用 IEnumerable 结果正确集成测试 Web Api Controller ?

c# - 如何检查用户的输入是否存在于数据库表中?

c# - asp.net 改变.page 宽度

mysql - EF Core MySQL Contains(variable) like operator

c# - Entity Framework 6 上下文不检索导航属性

c# - 使用 C# 的 Linq 中的 Zip 方法有什么问题?

c# - 查找输入字符串格式不正确的位置

C# Windows API 代码包