0
我有以下代碼:LINQ到實體組由子查詢
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
s發生。
或者有沒有更好的方法來重構代碼?
感謝您的回覆。第一個'.AsEnurmerable'似乎是必要的,但你對第二個是正確的。添加一個'.ToList'會產生一個異常:'MySql.Data.MySqlClient.MySqlException:已經有一個與這個Connection關聯的打開的DataReader,它必須先關閉。' – paulslater19 2012-07-17 09:36:43
@ paulslater19可悲的是每個IQueryable提供者都與其他的不同,那麼一切取決於你如何配置DBML。 – xanatos 2012-07-17 09:40:57
夠公平的。謝謝您的幫助。事情似乎並不緩慢。隨着數據集的增加,希望仍然如此。 – paulslater19 2012-07-17 09:43:19