我在查询数据库中的对象,并想知道如何获得它发生的排名顺序。所以我有类似的东西:
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.
答案 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