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应用程序编写此代码的最佳方法是什么?谢谢你的帮助!

LINQ使用ROW_NUMBER()函数

可以是这样的

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}));