C# Linq to SQL在访问属性之前检查对象上的null
简单地说,我的代码有更好的方法吗?检查下面的代码。 详情: 在LINQtoSQL中,我有一个包含一些内部查询的查询。在那个内部查询中,我使用了FirstOrDefault,所以现在我想检查FirstOrDefault是否返回了任何空值,然后我就可以访问这个属性了C# Linq to SQL在访问属性之前检查对象上的null,c#,entity-framework,linq,C#,Entity Framework,Linq,简单地说,我的代码有更好的方法吗?检查下面的代码。 详情: 在LINQtoSQL中,我有一个包含一些内部查询的查询。在那个内部查询中,我使用了FirstOrDefault,所以现在我想检查FirstOrDefault是否返回了任何空值,然后我就可以访问这个属性了 var Bills = db.BillMasters.Select(x => new BillHomeViewModel { ConsumerCategory = db.ConsumerCategories
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
});
可以使用以避免实体框架不支持的三元运算符
var Bills = db.BillMasters
.Select(x => new BillHomeViewModel
{
ConsumerCategory = db.ConsumerCategories
.Where(c => c.ID == x.ConsumerCategory)
.Select(c => c.CategoryName)
.DefaultIfEmpty("")
.FirstOrDefault()
});
可以使用以避免实体框架不支持的三元运算符
var Bills = db.BillMasters
.Select(x => new BillHomeViewModel
{
ConsumerCategory = db.ConsumerCategories
.Where(c => c.ID == x.ConsumerCategory)
.Select(c => c.CategoryName)
.DefaultIfEmpty("")
.FirstOrDefault()
});
linq到sql。在这种情况下不支持第一种方法。DefaultIfEmpty工作正常,仅FirstOrDefault工作异常,因为文档中说First受支持。不支持的列表中没有提到First,并且DefaultIfEmptyarg不受支持。我查不到。但由于文档是从2011年开始的,它们可能已过时。错误发生了:方法“First”只能用作最终查询操作。请考虑在这个实例中使用方法“FrestRealDebug”。最后不得不使用FirstOrDefault。现在它works@AshranHaider您应该将其更新为FirstOrDefalut,请参见答案please@Ksv3n是的,我这样做了,因为这是显而易见的错误信息。我只是在评论中告诉大家,这样人们就会知道这个错误。linq-to-sql。在这种情况下不支持第一种方法。DefaultIfEmpty工作正常,仅FirstOrDefault工作异常,因为文档中说First受支持。不支持的列表中没有提到First,并且DefaultIfEmptyarg不受支持。我查不到。但由于文档是从2011年开始的,它们可能已过时。错误发生了:方法“First”只能用作最终查询操作。请考虑在这个实例中使用方法“FrestRealDebug”。最后不得不使用FirstOrDefault。现在它works@AshranHaider您应该将其更新为FirstOrDefalut,请参见答案please@Ksv3n是的,我这样做了,因为这是显而易见的错误信息。我只是在评论中告诉大家,这样人们就会知道这个错误。