Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq to SQL在访问属性之前检查对象上的null_C#_Entity Framework_Linq - Fatal编程技术网

C# Linq to SQL在访问属性之前检查对象上的null

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

简单地说,我的代码有更好的方法吗?检查下面的代码。 详情: 在LINQtoSQL中,我有一个包含一些内部查询的查询。在那个内部查询中,我使用了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                
        });
可以使用以避免实体框架不支持的三元运算符

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是的,我这样做了,因为这是显而易见的错误信息。我只是在评论中告诉大家,这样人们就会知道这个错误。