我有两个列表说客户和订单使用字段cust_id加入。 客户有另一个字段TotalOrderQty,我需要通过获取给定日期范围内该客户的所有order_quantity值的总和来填充(通过查找Order表)。请帮我用Linq编写一个查询(不为每个客户使用Foreach)。
另请注意,即使客户未在指定日期范围内下订单,也应列出客户条目。
答案 0 :(得分:1)
你可以尝试这个:
var result = Customers.Join(Orders, x=>x.cust_id, y=>y.cust_id,
(x,y) => new
{
CustomeId = x.cust_id,
TotalOrderQty = x.TotalOrderQty,
Date = y.Date
}).Where(x=>x.Date>=startDate and x.Date<=endDate)
.GroupBy(x=>x.CustomerId)
.Select(x=> new
{
CustomerId = x.Key,
SumTotalOrderQty = x.Sum(y=>y.TotalOrderQty)
});
其中startDate
和endDate
定义了日期范围。
注意我已将您的列表重命名为Customers
和Orders
,因为这些定义更有意义。