加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 如何添加ROW_NUMBER到LINQ查询或实体?

发布时间:2020-12-15 18:36:45 所属栏目:asp.Net 来源:网络整理
导读:我被这个简单的数据问题所困扰。 我正在使用Entity框架并拥有产品数据库。我的结果页面返回这些产品的分页列表。现在我的结果按每个产品的销售数量排序,所以我的代码如下所示: return Products.OrderByDescending(u = u.Sales.Count()); 这将返回我的实体
我被这个简单的数据问题所困扰。

我正在使用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列?

解决方法

使用 indexed overload of 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 });

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读