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

时间:2012-05-23 00:14:14

标签: c# .net database entity-framework linq-to-entities

我有实体:

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(),但这不符合我的要求需要。

1 个答案:

答案 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);

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