stu*_*ell 7 .net c# linq-to-sql
Linq to SQL ROW_NUMBER()用于分页目的,即当你使用Skip()和Take()时.
但是,我似乎无法ROW_NUMBER()在查询中找到实际访问值的方法.我需要在查询中找到记录的ROW_NUMBER()(不带回所有记录).
我在T-SQL和Linq to Objects中成功完成了这项工作,但Linq to SQL解决方案难以实现.
在Linq to Objects中我可以得到如下行号:
var rowTarget =
mainQuery
.Select((obj, index) => new { obj.ID, Index = index })
.SingleOrDefault(x => x.ID == targetID);
// rowTarget.Index is the answer
Run Code Online (Sandbox Code Playgroud)
但Linq to SQL不支持Select()使用索引参数的覆盖(这是有道理的,实际上 - ROW_NUMBER()只有在使用Skip()和Take()时才会使用).
我似乎找不到一个不会导致从数据库返回所有记录的解决方案.
这甚至可能吗?
(编辑:尝试过;仍然给出“ Unsupported overload used for query operator 'Select'”)...
你为什么用SelectMany在这里?Select您是否尝试过包含索引的版本?
.Select((obj, index) => new { obj.ID, Index = index })
.SingleOrDefault(x => x.ID == targetID);
Run Code Online (Sandbox Code Playgroud)
您可能还应该包含一个显式的OrderBy- LINQ-to-SQL 可以让您在大多数情况下无需使用它,但 EF 却不能。