Linq към SQL използва ROW_NUMBER()
за целите на пейджинг, т.е. когато използвате Skip() и Take().
Изглежда обаче не мога да намеря начин за реален достъп до ROW_NUMBER()
стойности сам в заявката. Трябва да намеря ROW_NUMBER() на запис в рамките на заявка (без да връщам всички записи обратно).
Направих това успешно в T-SQL и Linq to Objects, но решението Linq to SQL се оказва неуловимо.
В Link to Objects мога да получа номера на реда по този начин:
var rowTarget =
mainQuery
.Select((obj, index) => new { obj.ID, Index = index })
.SingleOrDefault(x => x.ID == targetID);
// rowTarget.Index is the answer
Но Linq към SQL не поддържа заменките на Select()
, които използват параметър на индекс (и това наистина има смисъл - ROW_NUMBER()
ще се използва само ако се използват Skip() и Take().
Изглежда не мога да намеря решение, което да не доведе до връщане на всички записи от базата данни.
Възможно ли е изобщо това?