[英]linq to entities group by sub-query
我有以下代碼:
var statements = db.statement
.OrderByDescending(d => d.id)
.Take(5)
.AsEnumerable()
.Select(d => new Statements
{
Accounts = d.statement_entry.AsEnumerable()
.GroupBy(b => b.currency)
.Select(b =>
new Account
{
In = b.Where(l => l.amount > 0).Sum(l => l.amount),
Out = b.Where(l => l.amount < 0).Sum(l => l.amount),
Balance = b.Sum(l => l.amount),
Currency = b.Key
}).OrderBy(b => b.Currency),
UploadedDate = d.uploaded_date,
Id = d.id
})
.ToList();
沒有AsEnumerable()
,有沒有辦法做到這一點? 據我了解, AsEnumberable
將導致對返回的每個statement
進行查詢。
還是有更好的方法來重構代碼?
你看錯了 AsEnumerable
將使查詢在本地(客戶端)計算機上執行。
這個
statements = db.statement
.OrderByDescending(d => d.id)
.Take(5)
將在(SQL)服務器上執行,
客戶的其余部分
你為什么把AsEnumerable
? 我認為即使沒有查詢,查詢也應該工作(它將完成服務器端的所有工作)
唯一的事情是,在OrderBy(b => b.Currency)
您應該放置一個.ToList()
以便.Select(b => new Account
得以實現和緩存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.