当前位置: 首页 > 面试题库 >

实体框架按最大日期和计数分组

孙俊彦
2023-03-14
问题内容

我有以下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);


 类似资料:
  • 我有一个熊猫DataFrame看起来像这样: 我的目标是能够为每个项目计算每个日期之间的价值差异。例如,我想找到A项: 12(32-20,因为最大年份是2012年,最小年份是2010年)和B项:20 (40 - 20,因为最大年份是2019年,最小年份是2016年)。 我使用以下代码获取每个项目的年最大值和年最小值: 然后,我找到每个项目的年份最小值和年份最大值。然而,我坚持做我想要的。

  • 问题内容: 我知道这在这里被问了很多,而且我尝试使用其他示例并入我自己的示例,但是我似乎无法完成这项工作。 我有sku,日期和费用列,我想查看所有3列,但仅按最大日期(按sku分组)查看。目前: 需要: 这是我的SQL的样子: 这是设计视图的外观(我更是一个视觉化的人): 设计视图 这是第二周的自学,如何操作Access以及它如何工作,所以如果我们能用蜡笔画出如何正确完成此工作的方法,那就太好了。

  • 在SQL中,如何按查询分组获取计数中的最小/最大日期? 查询: --这并没有给出文件的最小和最大接收日期 预期输出...与SourceId、Count、StartDate(最小值)、EndDate(最大值)一起

  • 问题内容: 在下面的表格中,我需要获取状态日期等于2的最大日期的行 我需要使用此请求获取具有最大日期和按REMUN_ID分组的行 结果 : 我需要调整请求以从此结果中仅获取statut = 2的行 我的目的是获取以下结果,这是第一个查询的子查询,以仅获取具有状态2的子查询。 PS:如果我使用了将从中得到这些结果的子句: 那不是我想要的。 有什么建议?谢谢 问题答案: SQLFiddle:http

  • 问题内容: 我想知道哪个是Javascript 对象允许的最小和最大日期。我发现最小日期大约是200000 BC,但是我没有得到任何参考。 有人知道答案吗?我只是希望它不依赖于浏览器。 最好以“纪元时间”(= 1970-01-01 00:00:00 UTC + 00的毫秒数)回答。 问题答案: 根据规范§15.9.1.1: Date对象包含一个数字,该数字指示毫秒内的特定时间点。这样的数字称为时间

  • 问题内容: 我有这样的文件: 是否可以按日期查询最近10天发布的文档数量?例如: 问题答案: 是的,您可以使用聚合轻松实现这一点,如下所示: