0

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

林克方法:

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,我只是将它用于测试目的。我希望 FindIndex 方法基于 0 的结果为 1。任何想法为什么价值观不一样?

4

0 回答 0