Mat*_*nch 3 c# sql linq asp.net-mvc entity-framework
我有一个名为values的表,如下所示:
+-------+------------+-----------+----------+
|Id |DateTime |SensorId |Value |
+-------+------------+-----------+----------+
Run Code Online (Sandbox Code Playgroud)
SensorId是传感器详细信息表的外键.此值表中将有10m +记录.
我可以运行此sql命令返回每个SensorId的最新记录,并在大约0.3秒内运行.
SELECT a.*
FROM Values as a
INNER JOIN (
SELECT SensorId, MAX(ID) maxId
FROM Values
GROUP BY SensorId
) b ON a.SensorId = b.SensorId
AND a.Id = b.maxId
ORDER BY a.SensorId ASC
Run Code Online (Sandbox Code Playgroud)
如何在保持(或改进)性能的同时,在ac#应用程序中使用实体框架实现相同的输出?
使用LINQ to Entities和lambdas,您可以这样做:
dataContext.Values.GroupBy(p => p.SensorId)
.Select(p => p.FirstOrDefault(w => w.Id == p.Max(m => m.Id)))
.OrderBy(p => p.SensorId).ToList()
Run Code Online (Sandbox Code Playgroud)
其中dataContext是您的ObjectContext类实例.ToList()编译查询.
| 归档时间: |
|
| 查看次数: |
2991 次 |
| 最近记录: |