按多对多计数组表

时间:2017-03-21 09:29:25

标签: c# asp.net asp.net-mvc linq

我正在使用ASP.NET MVC,并且有一个多对多表,如下所示:

custID | objID
================
  1       2
  1       3
  2       5
  2       2
  3       2

userID和objID都是Foreign Keys链接到其他表。我想做的是根据objID获得最高计数。上表将产生以下结果:

objID | objName | Price
=======================
  2   | Chicken | 10

custID在这种情况下并不重要,因为我只想获得最高计数的objID

我尝试过以下但是我被困在这里:

//retrieve many-to-many table
var retrieved = db.Customer.Include(c => c.Objects)
var topID = retrieved.GroupBy(q => q.objID)
                     .OrderByDescending(g => g.Count())

2 个答案:

答案 0 :(得分:0)

 List<int> lst = new List<int>() { 1, 3, 4, 5, 1, 2, 3, 4, 5, 2, 3, 2 };
        var count = lst.GroupBy(q => q).OrderByDescending(s => s.Count())
                     .First().Key;

  var lstKeyWithCount  lst.GroupBy(i => i).Select(g => new { Key=g.Key,Count=g.Count() });

在lstKeyWithCount变量中,你得到count的键。 在计数变量中,你得到的重复值最多。

答案 1 :(得分:0)

应该做的伎俩。

var topID = retrieved.GroupBy(q => q.objID)
                 .Select(g => new { Id = g.Key, Total = g.Count() })
                 .OrderByDescending(g => g.Total).First().Id;