在使用实体框架执行LINQ时区分none exist父属性和empty属性
我构建LINQ表达式,然后使用实体框架执行在使用实体框架执行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
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/空。