C# 将查询从SQL转换为实体框架(Group by和max)
您好,我需要将此SQL查询转换为实体框架C# 将查询从SQL转换为实体框架(Group by和max),c#,sql-server,entity-framework,linq,C#,Sql Server,Entity Framework,Linq,您好,我需要将此SQL查询转换为实体框架 SELECT ValueTime, MAX(creation_time) AS creation_time, Value FROM DNI WHERE ValueTime BETWEEN '2016-06-07 17:16:15.610' AND '2016-06-11 17:16:15.610' GROUP BY ValueTi
SELECT
ValueTime, MAX(creation_time) AS creation_time, Value
FROM
DNI
WHERE
ValueTime
BETWEEN
'2016-06-07 17:16:15.610'
AND
'2016-06-11 17:16:15.610'
GROUP BY
ValueTime, Value
ORDER BY
ValueTime ASC;
为了得到它,我使用max(x=>x.creation_-time)返回一个datetime,groupby(x=>new{ValueTime,Value})返回一个只有两个成员(ValueTime和Value)的匿名函数,所以我不能将其转换为单个查询
提前感谢我意识到使用另一个查询我得到了相同的结果:
SELECT
ValueTime, MAX(creation_time) AS creation_time, Value
FROM
DNI
WHERE
ValueTime
BETWEEN
'2016-06-07 17:16:15.610'
AND
'2016-06-11 17:16:15.610'
GROUP BY
ValueTime, Value
ORDER BY
ValueTime ASC;
我使用了这个linq查询:
ctx.DNI
.Where(
x => x.ValueTime >= from && x.ValueTime <= to)
.GroupBy(
x => new { x.ValueTime, x.Value } )
.OrderBy(
x => x.Key.ValueTime )
ctx.DNI
.在哪里(
x=>x.ValueTime>=from&&x.ValueTime新{x.ValueTime,x.Value})
.OrderBy(
x=>x.Key.ValueTime)
我没有注意到结果是typeofIEnumerable
,这意味着我可以通过迭代结果来获得那些DNIítem
所以我可以再次查询结果请不要对我们大喊大叫不要用大写字母写——这很难读,很烦人,很粗鲁,很冒犯——只是不要这样做!(尽快确定你的头衔)放松。大喊大叫是最好的方式。sql发明时没有彩色显示器。他们假设大写的关键字表示结构。