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 :)
任何想法?