【问题标题】:Count Group By Many-to-Many table按多对多表计数分组
【发布时间】:2017-03-21 09:29:24
【问题描述】:

我正在使用 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())

【问题讨论】:

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


    【解决方案1】:

    应该做的伎俩。

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

    【讨论】:

      【解决方案2】:
       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 变量中,您会得到重复次数最多的值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-11
        • 2011-03-13
        • 1970-01-01
        • 2017-05-09
        • 1970-01-01
        • 2020-04-26
        • 1970-01-01
        • 2020-12-24
        相关资源
        最近更新 更多