我正在使用Linq,并有2个表,其存储记录如下

OrderMasterTable
Order_ID  |Place_Date   |ExpectedDelivery_Date  |IsDelivered
==========|=============|=======================|============
1         |1993-02-19   | 1993-02-20  00:01:00  | True
2         |1993-02-20   | 1993-02-20  00:01:00  | True
3         |1993-02-21   | 1993-02-22  00:01:00  | True
4         |1993-02-22   | 1993-02-23  00:01:00  | False


OrderAssignTable
Order_ID  |Delivered_By |Delivery_Date
==========|=============|=======================
1         |User123      | 1993-02-20   00:01:00
2         |UserXyz      | 1993-02-20   00:01:01
3         |User345      | 1993-02-24   00:01:00


我想按交货日期对输出数据进行分组,使其以下列方式出现:

 Date:  1993-02-20,
 OnTime: 1,
 Delayed:1


Date: 1993-02-22,
OnTime :1,
Delayed: 0

* OnTime if deliveryDateTime is <= ExpectedTime
* Date is deliveryDate


请帮帮我

最佳答案

你可以试试看

var query = from assign in OrderAssignTable
            join master in OrderMasterTable on assign.Order_ID equals master.Order_ID
            where master.IsDelivered == true
            group new { assign, master } by assign.Delivery_Date.Date into g
            select new
            {
                Date = g.Key,
                OnTime = g.Count(i => i.assign.Delivery_Date <= i.master.ExpectedDelivery_Date),
                Delayed = g.Count(i => i.assign.Delivery_Date > i.master.ExpectedDelivery_Date)
            };

关于c# - 如何用日期对Linq中的数据进行分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58948849/

10-12 18:06