c# - LINQ 使用 ROW_NUMBER() 函数?

标签 c# sql-server linq sql-server-2012

我有一个表格,显示了从我们的移动用户到我们的数据库的同步列表。这意味着每个用户可以拥有数千条同步记录。

我写了一个使用 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}));

关于c# - LINQ 使用 ROW_NUMBER() 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32027509/

相关文章:

c# - 组件和服务依赖项之间有什么区别?

c# - 使用C#从XML检索文本

c# - 如何使用 .NET 获取位于两个 '{' 括号'}' 之间的文本字符串?

sql - 关键字段上存在 1 到 3 关系的表之间的差异

c# - 我在命令提示符中输入了一个问号,而不是货币符号

c# - 在另一个 List<string> 中匹配 List<string> 中的部分字符串

sql-server - SQL session 状态服务器动态连接字符串

sql-server - 有没有办法让 SQL Server 存储过程在出错时自动退出?

c# - 为什么使用此 Linq to Sql 方法会出现 InvalidOperationException?

c# - default(TSource) 是一个真正的方法吗?