2015-09-18 92 views
0

我有一個像這樣排序列表與where子句LINQ

public class Obj1 
    { 
     public string Name {get; set;} 
     public List<KeyValuePair<int, double>> PairList {get; set;} 
    } 

如果我有OBJ1的列表中,我如何能夠基於最大價值,以便列表中的對象結構配對列表,其中密鑰是一個特定的值。例如這個對象。

 List<Obj1> foo = new List<Obj1>() 
      { 
       new Obj1() 
       { 
        Name = "Foo", 
        PairList = new List<KeyValuePair<int, double>>() 
        { 
         new KeyValuePair<int, double>(1,20), 
         new KeyValuePair<int, double>(2,25), 
         new KeyValuePair<int, double>(3,30) 
        } 
       }, 
        new Obj1() 
       { 
         Name = "Bar", 
        PairList = new List<KeyValuePair<int, double>>() 
        { 
         new KeyValuePair<int, double>(1,20), 
         new KeyValuePair<int, double>(2,60), 
         new KeyValuePair<int, double>(3,30) 
        } 
       }, 
         new Obj1() 
       { 
         Name = "Test", 
        PairList = new List<KeyValuePair<int, double>>() 
        { 
         new KeyValuePair<int, double>(1,20), 
         new KeyValuePair<int, double>(2,35), 
         new KeyValuePair<int, double>(3,30) 
        } 
       } 
      }; 

如果我想通過上面的列表,其中的關鍵是2訂購,我希望該列表的順序是以下名稱

Bar 
Test 
Foo 

我怎樣才能在LINQ做到這一點?

+1

只是好奇,爲什麼'名單>的''而不是字典'?你是否擔心重複密鑰或其他? – ryanyuyu

回答

1

試試這個

var result= foo.OrderByDescending(x => x.PairList[1].Value); 
+0

這就是我一直在尋找的,謝謝! –

1

你必須從PairList採取最大價值和USET它通過它的對象進行排序。

var result = foo.OrderByDescending(x => x.PairList.Max(v => v.Value));