用where子句LINQ按子列表的值排序
本文关键字:列表 排序 where 子句 LINQ | 更新日期: 2023-09-27 18:13:18
我有一个像这样的对象结构
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中做到这一点?
试试这个
var result= foo.OrderByDescending(x => x.PairList[1].Value);
您必须从PairList
中获取max值,并使用它来对对象进行排序。
var result = foo.OrderByDescending(x => x.PairList.Max(v => v.Value));