【发布时间】:2017-01-05 13:53:01
【问题描述】:
我要把这条 SQL 语句转换成 Linq:
select id, workerId, max(timestamp) as Datex, clientId from order where clientId = '123' group by workerId;
它使用表格顺序的每一列创建一个表格。但它只显示 clientID=123 的行并按工人分组。它只显示最新条目(最大时间戳)
如何将其传输到 Linq?我什么都试过了。例如,这不起作用:
var selectedOrder = from s in order
where s.clientID == "123"
group s by s.workerId into g
select new { id = s.id, workerId = g.Key, Datex = g.Max(s => s.timestamp), s.clientID};
更新:
- 我想给你举个例子:
id: 1 workerId: 162 Datex: 2014-11-13 clientId: 123 id: 2 workerId: 162 Datex: 2016-01-07 clientId: 123 id: 3 workerId: 222 Datex: 2015-12-12 clientId: 123 id: 4 workerId: 222 Datex: 2013-01-22 clientId: 100 id: 2 workerId: 162 Datex: 2011-11-07 clientId: 123
由于我想要的查询:
id: 2 workerId: 162 Datex: 2016-01-07 clientId: 123 id: 3 workerId: 222 Datex: 2015-12-12 clientId: 123
--> 所以我的第一张桌子上只有两个不同的工人。我想为每个工人显示最新日期的行
【问题讨论】:
-
id列未在 group by 语句中使用。你确定你可以运行这个 sql 查询吗? -
是的,它有效。这个想法是显示每个workerId的最新Tupel。所以每个workerId应该只出现一次。
-
换句话说:我想展示每个工人最新的Tupel
-
真的吗?
id在输出中有什么价值? -
最新Tupel的值
标签: c# sql entity-framework linq