找到数字对的“模式”

时间:2013-11-27 07:18:07

标签: c#

我的相关代码如下所示:

//The object

Class MyClass
{
     int PositionCount { get; set;}
     Value { get; set;}

     MyClass(int positionCount, double value)
     {
          PositionCount = positionCount;
          Value = value;
     }
}

//And then, later, using the object

List<MyClass> list = new List<MyClass>();

MyClass obj1 = new MyClass(18, 356.2);
list.Add(obj1);

MyClass obj2 = new MyClass(18, 356.2);
list.Add(obj2);

MyClass obj3 = new MyClass(19, 22.5);
list.Add(obj3);

MyClass obj4 = new MyClass(19, 30.325);
list.Add(obj4);

MyClass obj5 = new MyClass(19, 356.2);
list.Add(obj5);

我想要找到的是此列表中最常见的数字对。在这里,我希望得到obj1和obj2中的值,因为它们各自重复两个数字。我没有分别获得PositionCount和Value的模式,因为(在这种情况下),PositionCount的模式是19,Value是356.2,但是列表中没有一对(或更多)元素这两个数字。

感谢任何指导。

1 个答案:

答案 0 :(得分:3)

这样的事情:

var mostCommon = list
              .GroupBy(x=>new {x.PositionCount, x.Value})
              .OrderByDescending(x=>x.Count()).First();

它将按您的属性进行分组,然后以最大的数量

进行分组