gpt4 book ai didi

c# - 具有最大日期和计数的 Entity Framework 分组依据

转载 作者:太空狗 更新时间:2023-10-29 22:16:00 25 4
gpt4 key购买 nike

我有以下SQL

SELECT  Tag , COUNT(*) , MAX(CreatedDate)
FROM dbo.tblTags
GROUP BY Tag

输出如下:

+-----------------+------------------+-------------------------+
| Tag | (No column name) | (No column name) |
+-----------------+------------------+-------------------------+
| a great tag | 1 | 2015-04-01 18:30:31.623 |
| not a test | 1 | 2015-04-01 17:46:09.360 |
| test | 5 | 2015-04-01 18:13:17.920 |
| test2 | 1 | 2013-03-07 16:53:54.217 |
+-----------------+------------------+-------------------------+

我正在尝试使用 EntityFramework 复制该查询的输出。

我有以下有效的逻辑:

    var GroupedTags = Tags.GroupBy(c => c.Tag)
.Select(g => new
{
name = g.Key,
count = g.Count(),
date = g.OrderByDescending(gt => gt.CreatedDate).FirstOrDefault().CreatedDate
})
.OrderBy(c => c.name);

但与原始 SQL 查询相比,执行时间长得可怕。关于如何优化我的方法有什么建议吗?不知何故感觉不对。

最佳答案

如果你想要一个最大值,使用 Max() Linq 方法:

var GroupedTags = Tags.GroupBy(c => c.Tag)
.Select(g => new
{
name = g.Key,
count = g.Count(),
date = g.Max(x => x.CreatedDate)
})
.OrderBy(c => c.name);

关于c# - 具有最大日期和计数的 Entity Framework 分组依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29399430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com