【问题标题】:How to write a query for the below scenario?如何为以下场景编写查询?
【发布时间】:2014-05-25 03:37:34
【问题描述】:

请告诉我下面的场景。

表:

Id appName        role    Type    Status      createdAt
1  application1  role1   false    completed   25/05/2014 12.00.00
2  application1  role1   true     completed   25/05/2014 11.00.00
3  application1  role1   true     completed   25/05/2014 11.00.00
4  application2  role1   true     completed   25/05/2014 11.00.00
5  application2  role1   false    completed   25/05/2014 10.00.00

在上表中我需要像这样的输出

output:
Id appName        role    Type    Status      createdAt
4  application2  role1   true     completed   25/05/2014 11.00.00

我不想要 application1,因为它的类型是 false 并且 createAt 最晚。 如果 application1 类型为 true 并且是最新的,那么我们应该显示该记录。 请告诉我如何在 linq to sql 中编写查询。

关注:最新记录类型为假则无需显示匹配记录。在上表中 application1 类型为 false 且是最新的,则无需显示 1、2、3。 application2 类型为 true 且是最新的,因此仅显示 4 条记录。

【问题讨论】:

  • 请向我们展示您的尝试。

标签: sql linq linq-to-sql


【解决方案1】:

分两步进行查询:首先为您的密钥选择所有最新记录。然后从最新记录中选择状态正确的记录。

【讨论】:

    【解决方案2】:
    (from d in context.Table
    group d by d.appName into g
    select g.OrderByDescending(gg=>gg.createdAt).Take(1))//should give you latest for each appname
    .Where(dd=>dd.Type == true)//should filter out the ones with Type being False
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多