簡體   English   中英

LINQ到實體組的子查詢

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

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