[英]How can I generate this query with Entity Framework to return the corresponding collections?
[英]How to return many Child Collections Count() in a single entity framework query
我在Entity Framework中有兩個實體,Parent和Child。
父級有一組子實體。
在我的查詢中,我想只返回父實體(完全類型的EF類型)以及子實體的Count()(這可以設置為Parent上的屬性),但我只想在一次調用數據庫,無需編寫自定義S-Proc。 這可能嗎?
基本的,我想把它變成一個單一的查詢:
EFContext content = new EFContext();
IQueryable<Parent> parentQuery = context.Parent.Select();
foreach(Parent parent in parentQuery)
{
parent.NoChildItems = parent.Childs.Count();
}
當我在此激活枚舉器時,它會調用列表的數據庫,並再次為每個Count()查詢調用。 我每次返回大約100個項目,因此不希望僅針對子項目的數量進行100次單獨調用。
謝謝你的幫助。
這應該工作:
IQueryable parentQuery = context.Parent.Select(p => new { Parent = p, ChildCount = p.Childs.Count() });
編輯
如果你定義:
public class ParentModel
{
public Task Parent { get; set; }
public int ChildCount { get; set; }
}
您可以使用
IQueryable parentQuery = context.Parent.Select(p => new ParentModel { Parent = p, ChildCount = p.Childs.Count() });
編輯
你也可以這樣做:
var parentQuery = context.Parent.Select(p => new { Parent = p, ChildCount = p.Childs.Count() }).ToList();
parentQuery.ForEach(p => p.Parent.ChildCount = p.ChildCount);
var result = return parentQuery.Select(p => p.Parent);
簡短,你已經填充了你的財產。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.