【发布时间】:2013-03-11 16:58:53
【问题描述】:
我正在尝试使用 Linq 从流行的 NorthWind DB 生成以下报告。它应该由Customer、OrderYear分组。
CustomerName OrderYear Amount
我必须使用下表Customer、Order 和Order Details。
到目前为止,这就是我所做的。
NorthwindDataContext north = new NorthwindDataContext();
var query = from o in north.Orders
group o by o.Customer.CompanyName into cg
select new
{
Company = cg.Key,
YearGroup = ( from y in cg
group y by y.OrderDate.Value.Year into yg
select new
{
Year = yg.Key,
YearOrdes = yg
}
)
};
foreach (var q in query)
{
Console.WriteLine("Customer Name : " + q.Company);
foreach (var o in q.YearGroup)
{
Console.WriteLine("Year " + o.Year);
Console.WriteLine("Sum " + o.YearOrdes.Sum(yo => yo.Order_Details.Sum( yd=> Convert.ToDecimal(yd.UnitPrice* yd.Quantity))));
}
Console.WriteLine();
}
它给了我预期的结果。我通过在后端运行 t-sql 进行比较。但是,我有 2 个问题。
- 在内部
foreach中,第二条语句生成总和。这是正确的方法吗?还是有更好的? - 如何在 Linq 查询本身中获取 Sum。
【问题讨论】:
标签: c# .net linq linq-to-sql northwind