繁体   English   中英

获取具有过滤内部实体的实体-EF

[英]Get entity with filtered inner entities - EF

我有实体:

Entry
{
    public virtual ICollection<Content> Contents { get; set; }
}

我需要获取包含已过滤ContentsEntry

var entryWithFilteredContents = dbContext.Entry.Single(). ???
    /*Load(entry=>entry.Contents) Where(content=> content.Value > 10)*/

现在,当我编写entryWithFilteredContents.Contents我希望只接收Value大于10的内容。我知道我可以得到一个var entry = db.Context.Entry.Single() ,然后得到var contents = entry.Contents.Where(content=> content.Value > 10)但不能满足我的需求。

EF当前不支持开箱即用。

通常的解决方法是先选择一个投影,如下所示:

var query = from e in dbContext.Entry
            select new { Entry = e, Related = e.Contents.Where(c => c.Value > 10) };
return query.Where(p => p.Related.Count > 0).Select(p => p.Entry);

当然,您也可以直接返回任何投影(并可能节省一些数据库往返路程),但是将需要一个非匿名类型才能使结果转义当前方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM