如何在 LINQ 中按月将这些项目分组在一起
本文关键字:项目 在一起 LINQ | 更新日期: 2023-09-27 18:31:03
我有一个从数据库中提取数据的查询。 它按检查日期对项目进行分组。 我需要将标准日期时间的CheckDate转换为月份,以便按月份分组,没有其他日期。 我不知道该怎么做。
var query = from ech in this.dbContext.EmployeeCheckHistories
where ech.CompanyID == GlobalVariables.CompanyID &&
ech.Employees.ClientID == GlobalVariables.Client
group ech by ech.CheckDate into echG
orderby echG.Key descending
select echG;
我需要将标准日期时间的检查日期转换为月份
如果它真的是一个DateTime
,那么这应该可以解决问题。 只需按 CheckDate
上的月份属性分组即可。
var query = from ech in this.dbContext.EmployeeCheckHistories
where ech.CompanyID == GlobalVariables.CompanyID &&
ech.Employees.ClientID == GlobalVariables.Client
group ech by ech.CheckDate.Month into echG
orderby echG.Key descending
select echG;
如果它实际上是一个Nullable<DateTime>
,那么您需要检查该值是否存在,如果存在,则按月分组。
var query = from ech in this.dbContext.EmployeeCheckHistories
where ech.CompanyID == GlobalVariables.CompanyID &&
ech.Employees.ClientID == GlobalVariables.Client &&
ech.CheckDate.HasValue
group ech by ech.CheckDate.Value.Month into echG
orderby echG.Key descending
select echG;
您的查询-
var query = from ech in this.dbContext.EmployeeCheckHistories
where ech.CompanyID == GlobalVariables.CompanyID &&
ech.Employees.ClientID == GlobalVariables.Client
group ech by ech.CheckDate into echG
orderby echG.Key descending
select echG;
可以简化为-
var query = this.dbContext.EmployeeCheckHistories.Where(c=>
c.CompanyID == GlobalVariable.CompanyID
&& c.Employees.ClientID == GlobalVariables.ClientID).GroupBy(d=> d.CheckDate.Month);