如何为以下场景编写查询?

时间:2014-05-25 03:37:34

标签: sql linq linq-to-sql

请告诉我以下情况。

表:

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中将查询写入sql。

关注:最新记录类型为false然后无需显示匹配记录。在上表中 application1类型为false,它是最新的,然后不需要显示1,2,3。 application2类型为true且它是最新的,因此显示只记录4。

2 个答案:

答案 0 :(得分:0)

通过两个步骤进行查询:首先选择密钥的所有最新记录。然后从最新记录中选择具有正确状态的记录。

答案 1 :(得分:0)

(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