在使用实体框架执行LINQ时,区分不存在的父属性和空属性



我构建了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)

我的问题是:当该人根本不存在或该人存在但其朋友是空集合时,我现在得到相同的结果,如果有什么方法来区分这两种情况?人根本不存在vs人存在但他的朋友是一个空集合。不打算像第一人称优先那样执行IQueryable两次。

如果属性是单一值,如FirstName,同样的问题。

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

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

相关内容

  • 没有找到相关文章

最新更新