c# - 我如何仅在 LINQ 查询中的日期时间中的日期上使用 group by

标签 c# asp.net linq date datetime

我有这个 LINQ 查询

var data = (from orders in db.Orders
        group orders by orders.OrderDate into dateGroup
        select new OrderDateGroup()
        {
            OrderDate = dateGroup.Key,
            OrderCount = dateGroup.Count()
        }).Take(10);

orders.OrderDate 是 DateTime 但我只想根据日期进行分组

最佳答案

您可以使用规范函数:

group orders by EntityFunctions.TruncateTime(orders.OrderDate) into dateGroup

附加信息:
EntityFunctions方法被称为 规范函数 .这些是所有 Entity Framework 提供程序都支持的一组函数。这些规范函数将被转换为提供者的相应数据源功能。规范函数是访问核心语言之外的功能的首选方式,因为它们使查询保持可移植性。

您可以找到所有规范函数 here以及所有日期和时间规范函数 here .

另外,不要忘记包含 System.Data.Objects命名空间来自 System.Data.Entity.dll .

注:
如果您使用的是EF6,那么您必须考虑更改EntityFunctions DbFunctions .并且不要忘记包括 System.Data.Entity命名空间来自 EntityFramework.dll .

关于c# - 我如何仅在 LINQ 查询中的日期时间中的日期上使用 group by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30216179/

相关文章:

c# - .NET 程序员的 JavaScript 编辑器

c# - 在 ajax 错误时显示来自服务器的异常消息

javascript - 隐藏文本框在提交时失去其值

c# - 使用 LINQ to Entities 对多个级别的子集合进行排序

C# csvhelper 写入单独的行

asp.net - 如何在不同选项卡中设置默认按钮?

asp.net - 如何在 ASP.Net MVC 5 站点中设置 NameClaimType?

c# - 如何在选择的 lambda 中省略一个值?

c# - 使用 LINQ 删除最后一项

java - sqlite 日期时间格式 : which one is better?