所以我知道您可以像使用LINQ一样使用OrderBy:
MyList.OrderBy(x => x.foo[0].Value).ThenByDescending(x => x.foo[1].Value);
但是,我不知道x.foo有多少个属性,我想按所有属性进行订购。这可能吗?
编辑:在这种情况下,x.foo是KeyValuePair的列表,我在其中按值按键顺序对它们进行排序。
答案 0 :(得分:7)
提供至少一个项目,并且所有项目都具有相同数量的“ foos”
int foosPerItem = MyList.First().Foo.Count;
IOrderedEnumerable<T> ordered = MyList.OrderBy(x => x.foo[0].Value);
for (int i = 1; i < foosPerItem; i++)
{
ordered = ordered.ThenByDescending(x => x.foo[i].Value);
}
// added after your comment:
// ordered = ordered.ThenByDescending(x => x.bar);
在您对其他先按栏排序的评论之后:
IOrderedEnumerable<T> ordered = MyList.OrderBy(x => x.bar);
for (int i = 0; i < foosPerItem; i++)
{
ordered = ordered.ThenByDescending(x => x.foo[i].Value);
}