gpt4 book ai didi

c# - Entity Framework 为每种类型的记录选择最近的记录

转载 作者:行者123 更新时间:2023-11-30 14:10:07 25 4
gpt4 key购买 nike

我有一个名为 values 的表,如下所示:

+-------+------------+-----------+----------+
|Id |DateTime |SensorId |Value |
+-------+------------+-----------+----------+

SensorId 是传感器详细信息表的外键。此值表中将有 1000 万条以上的记录。

我可以运行此 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

如何在 C# 应用程序中使用 Entity Framework 实现相同的输出,同时保持(或提高)性能?

最佳答案

使用 LINQ to Entities 和 lambda,您可以这样做:

dataContext.Values.GroupBy(p => p.SensorId)
.Select(p => p.FirstOrDefault(w => w.Id == p.Max(m => m.Id)))
.OrderBy(p => p.SensorId).ToList()

其中 dataContext 是 ObjectContext 类的实例。 ToList() 编译查询。

关于c# - Entity Framework 为每种类型的记录选择最近的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25538466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com