我正在尝试NorthWind
使用 Linq 从流行的数据库生成以下报告。它应该由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 个问题。
- 在 Inner
foreach
中,第二条语句生成总和。这是正确的方法吗?还是有更好的可用? - 如何在 Linq 查询本身中获取 Sum。