2013-11-27 41 views
0

我相關的代碼看起來是這樣的:尋找對數字的「模式」

//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,值爲356.2,但是列表中沒有一對(或多個)元素這兩個數字。

感謝您的任何指導。

+0

如果你能告訴我們你尋找一維的模式代碼,我們可以告訴您如何適應它一起找到二者的模式。 – Rawling

回答

3

事情是這樣的:

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

它將按你的屬性,然後獲得與最大計數