我有一个像这样的对象结构
public class Obj1
{
public string Name {get; set;}
public List<KeyValuePair<int, double>> PairList {get; set;}
}
如果我有一个Obj1列表,我怎么能根据Pair列表中的最大值来订购该列表,其中key是一个特定的值。例如这个对象。
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)
}
}
};
如果我想通过上面的Key为2的列表进行排序,我希望列表的顺序是以下名称
Bar
Test
Foo
如何在LINQ中执行此操作?
答案 0 :(得分:1)
试试这个
var result= foo.OrderByDescending(x => x.PairList[1].Value);
答案 1 :(得分:1)
您必须从PairList
获取 max 值并使用它来对其进行排序。
var result = foo.OrderByDescending(x => x.PairList.Max(v => v.Value));