我有一张表格,显示了从我们的移动用户到我们数据库的同步列表。这意味着每个用户可能有数千个同步记录。
我编写了一个查询,该查询使用该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 = ######;
.net Web应用程序在C#中使用LINQ编写此代码的最佳方法是什么?谢谢您的帮助!
可能是这样的
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}));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句