SQL Row_Number()和Linq记录计数不同

时间:2013-10-16 00:21:15

标签: c# linq tsql sql-server-2012 row-number

我有两位代码基本上做同样的事情,但结果是不同的。我试图从数据库中的有序列表中获取记录的索引号,然后跳过/取一些结果。

Linq方法:

int index = db.users.OrderByDescending(o => o.TotalScore)
              .ToList()
              .FindIndex(f => f.UserId == User.UserId); 
               // returns 557

SQL方法:

WITH IndexedUsers AS (
  SELECT UserId, 
     ROW_NUMBER() OVER (ORDER BY TotalScore desc) AS 'RowNumber'
  FROM [User]  
) 
SELECT RowNumber
FROM IndexedUsers 
WHERE UserId = @userId
//Returns 559

难以理解这里的差异。我不想从数据库中调用用户集合上的ToList,我只是将它用于测试目的。我期望结果为1,FindIndex方法为0。任何想法为什么价值观都不一样?

0 个答案:

没有答案