如何在实体框架中获得行级别

时间:2014-07-19 06:06:50

标签: entity-framework

我在查询数据库中的对象,并想知道如何获得它发生的排名顺序。所以我有类似的东西:

var productRank = db.Products.OrderBy(i => i.WilsonScore);

所以我想要一个产品列表,然后按他们的分数订购,并获得我选择的产品ID的行号。所以,让我说我得到

ProductID|Score
12 0.99
23 0.95
34 0.93

我想获得返回结果的ID为34行的产品。在这种情况下,它将是3.如果我选择ID 12,它将是1.

2 个答案:

答案 0 :(得分:3)

您可以使用选择...

获取索引
var productRanks = db.Products.OrderByDescending(i => i.WilsonScore)
                       .Select((p, idx) => new { Rank = idx + 1, Product = p });

var product34Rank = productRanks
                       .Single(p => p.Product.ProductID == 34)
                       .Rank;  // 3

答案 1 :(得分:-1)

添加 AsEnumerable()即可解决实际问题。

 var productRanks = db.Products
 .AsEnumerable()
 .OrderByDescending(i => i.WilsonScore.Products)
 .Select((p, idx) => new { Rank = idx + 1, Product = p });

 var product34Rank = productRanks
 .Single(p => p.Product.ProductId == 34)
 .Rank;  // 3