.net - LINQ 和 EntityFramework : Getting first result after group by

标签 .net linq entity-framework

我有下一张表:

My Table

我在使用 C# 的 LINQ 中尝试做的是按 Created 列分组(忽略时间!)并在每个日期旁边显示它的计数,以便我可以获取我想要的任何顶部行。 这个查询我在 sql 中没有问题,如下所示:

SELECT CAST(Created AS DATE) 'Created', COUNT(*) AS 'Count'
FROM Alert
GROUP BY CAST(Created AS DATE)
ORDER BY 'Count' DESC

结果是:

enter image description here

但是,我想在 LINQ 中这样做,只是我所有的试用都失败了,有人可以指导我吗?

最佳答案

使用 DateTimeDate 属性:

var query = db.Alert
    .GroupBy(a => a.Created.Date)
    .Select(g => new { Created  = g.Key, Count = g.Count() })
    .OrderByDescending(x => x.Count);

Linq-To-Entities 似乎不支持 DateTime.Date 属性。所以你必须使用 DbFunctions.TruncateTime .

那么这应该可以工作:

var query = db.Alert
    .GroupBy(a => DbFunctions.TruncateTime(a.Created))
    .Select(g => new { Created  = g.Key, Count = g.Count() })
    .OrderByDescending(x => x.Count);

关于.net - LINQ 和 EntityFramework : Getting first result after group by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25500180/

相关文章:

c# - 来自数据库的数据未返回,但正常列表是

.net - 考虑到开发人员的时间对 GetHashCode 进行单元测试

c# - 在 C# .NET 中为蓝牙创建虚拟 COM 端口

C# 处理空格

c# - LINQ 连接具有不同类型的多个条件

entity-framework - 使用 Entity Framework 代码优先CTP5,如何创建为主键列而不是标识列的主键

.net - 连接字符串中的集成安全性

c# - 我可以在LINQ中更改“相等比较”吗?

java - LINQ 在 Java 中的 Single?

.net - 如何使用部分类扩展 ADO.NET Entity Framework 对象?