0
我對LINQ有一個噩夢。使用Linq將聚合父/子錶轉換爲SQL和VB.net
我有一個項目表,每個項目都有很多InvoiceHeaders。發票標題有一個字段AmountNet - 發票的價值。
爲了參數的緣故,我想從項目的所有字段中檢索發票標題的數量和AmountNet的總和。即我的項目清單,我提出的發票數量和價值。
這聽起來不難吧....好吧,我剛剛花了兩個小時通過谷歌和SO收費的最好的部分找到解決方案。我已經成功的:
from c in Projects _
select new with _
{ _
.ID = c.ID, _
.Invoices = InvoiceHeaders.Where(Function(p) c.ID = p.ProjectID).Count, _
.InvoiceValue = InvoiceHeaders.Where(Function(p) c.ID = p.ProjectID).Sum(function(f) f.AmountNet) _
}
那些有鷹的眼睛一定會發現這種說法是多麼可怕的 - 每一個項目運行兩個查詢得到聚集。 Eughk。
我也與Linq中/ VB多聚集的地方了:
from ih in InvoiceHeaders _
group ih by ih.projectid into g = Group _
select new with { _
.InvoiceValue = g.Sum(function(f) f.AmountNet), _
.InvoiceCount = g.Count _
} _
但是這個我無法弄清楚如何返回該項目的細節。 ESP看作'鑰匙'在Vb.net中不起作用。
順便說一句 - 我正在使用VB.net :)
任何想法?