如何在选择产品访问具有相同匹配项的产品ID时解决冲突

时间:2015-01-31 06:00:27

标签: linq entity-framework

我的数据库表包含记录如下:

ID   ProductId  Occurences
1        1          1
2        2          5
3        3          3
4        4          3
5        5          5
6        6          8
7        7          9

现在我希望获得具有最高出生率的前4名ProductId

这是我的查询:

 var data = (from temp in context.Product
                        orderby temp.Occurences descending
                        select temp).Take(4).ToList();

现在因为ProductId 2和5有相同的出现而且ProductId 3和4也有相同的出现然后在这里我没有得到如何解决这意味着我应该采取哪个产品ID因为他们有相同OCCURENCES

基本上我选择这个productid来在我的网站上显示这些产品。我将显示那些通过此查询返回的产品。

所以有人可以给我一些想法,比如如何解决这个问题吗?

预期产出:

 ID   ProductId  Occurences
 1        7         9
 2        6         8

所以现在为第3个位置我应该选择哪个ProductId,因为ProductId 2和5具有相同的出现次数,而第4个位置是ProductId我应该在3和4之间选择因为它们也有相同的出现。

1 个答案:

答案 0 :(得分:0)

我可以建议您使用分组技术并选择第一个

context.Product.GroupBy(p => p.Occurance)
                       .Select(grp => grp.FirstOrDefault())
                       .Take(4)ToList();

抱歉,我没有对此进行过测试,但它应该可以胜任。您只需要添加OrderBy。