[英]Get entity with filtered inner entities - EF
我有实体:
Entry
{
public virtual ICollection<Content> Contents { get; set; }
}
我需要获取包含已过滤Contents
的Entry
。
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.