如何將ROW_NUMBER添加到LINQ查詢或實體?

asp.net entity-framework linq

我被這個簡單的數據問題困擾了。

我正在使用Entity框架並擁有一個產品數據庫。我的結果頁面返回這些產品的分頁列表。現在我的結果按每個產品的銷售數量排序,所以我的代碼如下所示:

return Products.OrderByDescending(u => u.Sales.Count());

這將返回我的實體的IQueryable數據集,按銷售數量排序。

我希望我的結果頁面顯示每個產品的排名(在數據集中)。我的結果應如下所示:

Page #1
1. Bananas
2. Apples
3. Coffee

Page #2
4. Cookies
5. Ice Cream
6. Lettuce

我希望我只想在結果中使用SQL ROW_NUMBER變量添加一列...但我不知道如何將此列添加到我的結果數據表中。

我的結果頁面確實包含一個foreach循環,但由於我使用的是分頁集,我猜測使用該數字來偽造排名數字不是最好的方法。

所以我的問題是,在這種情況下,如何在查詢結果中添加ROW_NUMBER列?

熱門答案

使用Select索引重載

var start = page * rowsPerPage;
Products.OrderByDescending(u => u.Sales.Count())
    .Skip(start)
    .Take(rowsPerPage)
    .AsEnumerable()
    .Select((u, index) => new { Product = u, Index = index + start });


許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因