使用LINQ嵌套查询获取最新行进行更新
本文关键字:更新 最新 获取 LINQ 嵌套 查询 使用 | 更新日期: 2023-09-27 18:15:51
LINQ专家,我希望以每个用户为基础更新最新数据,解释说我有一个表"dummy":
CREATE TABLE [dbo].[dummy](
[Id] [int] IDENTITY(1,1) NOT NULL,
[TimeStamp] [datetime] NOT NULL,
[UserId] [int] NOT NULL,
[TransAmount] [decimal](10, 4) NOT NULL
) ON [PRIMARY]
我想做的是得到每个UserId的最新记录,使用SQL,我会使用如下:
select * from dummy d1 join
(
select max(id) as id
from dummy d1
Join (select distinct userid from dummy) d2 on d1.userid = d2.userid
group by d1.userid)
as d2 on d1.id = d2.id
但是我希望使用LINQ来做到这一点。
谢谢。
您要查找的是LINQ中的GroupBy。下面的内容:
var users = from d in dummy
group d by d.userId into u
select new
{
UserId = u.Key
Id = u.Max(i => i.Id)
};
使用方法语法也可以:
var maxIds = dummy.GroupBy(d => d.UserId, (userId, dummyGroup) =>
dummyGroup.Max(dg => dg.Id));
如果您想要整个记录,您可以使用以下命令:
var recordsWithMaxId = dummy.GroupBy(d => d.UserId, (userId, dummyGroup) =>
dummyGroup.OrderByDescending(dg => dg.Id).First());
检查:
var maxID = dummy.Max(i => i.UserID)
var row = table.First(i => i.UserID == maxID);
reference from: link