LINQ使用ROW_NUMBER()函数
本文关键字:函数 NUMBER 使用 ROW LINQ | 更新日期: 2023-09-27 18:08:09
我有一个表,显示了从我们的移动用户返回到我们的数据库的同步列表。这意味着每个用户可能有数千条同步记录。
我已经编写了一个查询,该查询使用ROW_NUMBER()
函数为每个用户提取最近的同步,并且仅为活动用户,因为我不想看到来自终止员工的同步数据。(例如,用户A昨天中午同步,用户A今天中午同步,但我只想看到今天的同步)。
SELECT * FROM
(
SELECT *, ROW_NUMBER() OVER (PARTITION BY [SerialNumber] ORDER BY SyncDate DESC )as RN
FROM [TSCH].[dbo].[SYNCREPORT]
) as T
Where RN = 1 and WorkerStatus = 'ACTIVE' and SerialNumber = ######;
在c#中使用LINQ为我的。net web应用程序编写此代码的最佳方法是什么?谢谢你的帮助!
可以是这样的
var result=yourtable.OrderBy(x=>x.SyncDate).GroupBy(x=>x.SerialNumber)
.Where(x=>x.WorkerStatus=="Active" && x.SerialNumber=="####")
.Select(g => new {g, count= g.Count()})
.SelectMany(t => t.g.Select(b => b)
.Zip(Enumerable.Range(1,t.count), (c,i) => new {c.value1, c,value2, rn = i}));