Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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
在使用实体框架执行LINQ时区分none exist父属性和empty属性_Linq_Entity Framework 6 - Fatal编程技术网

在使用实体框架执行LINQ时区分none exist父属性和empty属性

在使用实体框架执行LINQ时区分none exist父属性和empty属性,linq,entity-framework-6,Linq,Entity Framework 6,我构建LINQ表达式,然后使用实体框架执行IQueryable扩展方法ToArrayAsync 我有两个问题: value(System.Data.Entity.Core.Objects.ObjectQuery`1[Person]).MergeAs(AppendOnly).Where(currentValue => (currentValue.PersonId == 111)).SelectMany(Param_0 => Param_0.Friends) value(System.D

我构建LINQ表达式,然后使用实体框架执行
IQueryable
扩展方法
ToArrayAsync

我有两个问题:

value(System.Data.Entity.Core.Objects.ObjectQuery`1[Person]).MergeAs(AppendOnly).Where(currentValue => (currentValue.PersonId == 111)).SelectMany(Param_0 => Param_0.Friends)
value(System.Data.Entity.Core.Objects.ObjectQuery`1[Person]).MergeAs(AppendOnly).Where(currentValue => (currentValue.PersonId == 111)).Select(Param_0 => Param_0.FirstName)
我的问题是:当这个人根本不存在,或者这个人存在,但它的朋友是一个空集合时,我现在得到了相同的结果,如果有任何方法来区分这两种情况的话?此人根本不存在,而此人存在,但其好友是一个空集合。不打算像第一人称优先一样执行两次
IQueryable


如果属性是单个值,如
FirstName

是,则会出现相同的问题。您可以使用
Select
(在
Where()
之后)将
Person
对象投影到一个匿名类型中,该类型包含
Person
对象以及它是否存在(或任何其他
Person
字段/属性)


如果您分享您的差异化计划,我可以分享如何实现这一目标的更多细节。

是的。您可以使用
Select
(在
Where()
之后)将
Person
对象投影到一个匿名类型中,该类型包含
Person
对象以及它是否存在(或任何其他
Person
字段/属性)


如果您分享您的差异化计划,我可以分享有关如何实现差异化的更多详细信息。

谢谢,我希望如果个人不存在,那么应该抛出一些我可以捕获的异常,例如父实体不存在。若Person存在且属性不具有值,则返回空值或null值。或者返回空的或空的结果,并附加标志以指示父级是否存在。听起来您想要的是空传播。使用
…Where(currentValue=>(currentValue.PersonId==111))?。选择many(Param_0=>Param_0.Friends)
,然后测试结果是否为空。这不会解决问题,因为如果我得到的结果为空,我不知道此人是否不存在,或者此人是否存在,但其好友为空/空。当我执行上面所示的LINQ时,我需要区分这两种情况,情况1:此人不存在情况2:此人存在,但其好友为null/空。谢谢,我希望如果此人不存在,那么应该抛出一些我可以捕获的异常,如父实体不存在。若Person存在且属性不具有值,则返回空值或null值。或者返回空的或空的结果,并附加标志以指示父级是否存在。听起来您想要的是空传播。使用
…Where(currentValue=>(currentValue.PersonId==111))?。选择many(Param_0=>Param_0.Friends)
,然后测试结果是否为空。这不会解决问题,因为如果我得到的结果为空,我不知道此人是否不存在,或者此人是否存在,但其好友为空/空。当我执行上面显示的LINQ时,我需要区分这两种情况,情况1:此人不存在情况2:此人存在,但其朋友为null/空。