我有实体:
Entry
{
public virtual ICollection<Content> Contents { get; set; }
}
我需要获取包含已过滤Entry
的{{1}}。
Contents
现在当我写var entryWithFilteredContents = dbContext.Entry.Single(). ???
/*Load(entry=>entry.Contents) Where(content=> content.Value > 10)*/
时,我希望只收到价值大于10的内容。我知道我可以获得entryWithFilteredContents.Contents
然后var entry = db.Context.Entry.Single()
,但这不符合我的要求需要。
答案 0 :(得分:1)
这不是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);
您当然也可以直接返回任何投影(并可能保存一些数据库往返),但需要非匿名类型才能使结果转义当前方法。