簡體   English   中英

如何在單個實體框架查詢中返回許多子集合Count()

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM