c# - 如何在 Linq 中将数据与日期分组

标签 c# linq group-by

我使用 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/

相关文章:

c# - 在 Xamarin Master-Detail MVVM 设置中,如何从 subview 的 View 模型中触发事件并让它被父 View 的 View 模型捕获

c# - 如何在 LINQ 中执行子查询?

c# - linq-to-sql 是否处理动态查询?

java - HQL 中的 Linq ".any"等价物

mysql - 获取MySQL中每组的最新记录以及组行数

c# - MySQL 表名作为参数

c# - 使用 Linq to XML 自动填充对象

c# - 如何确定客户端计算机上 Microsoft.Office.Interop.Excel 的版本?

php - 如何从Mysql返回PHP数组

MySQL - 在两个不同的表上进行计算和求和