ROW_NUMBERをLINQクエリまたはエンティティに追加する方法

asp.net entity-framework linq

質問

私はこの簡単なデータ問題に困惑しています。

私はEntity Frameworkを使用しており、製品のデータベースを持っています。私の検索結果ページには、これらの商品のページ別リストが表示されています。今のところ私の結果は各製品の売り上げ数で並べられているので、私のコードは次のようになっています。

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 });


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ