所以我知道你可以像LINQ一样使用OrderBy:
MyList.OrderBy(x => x.foo[0].Value).ThenByDescending(x => x.foo[1].Value);
Run Code Online (Sandbox Code Playgroud)
但是我处在这样一种情况下,我不知道x.foo会有多少属性,我想通过它们来订购.这可能吗?
编辑:在这个例子中,x.foo是KeyValuePair的列表,我按照键的顺序按值排序.
如果至少有一个项目,并且所有项目具有相同数量的'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);
Run Code Online (Sandbox Code Playgroud)
按照您对酒吧排序的其他评论:
IOrderedEnumerable<T> ordered = MyList.OrderBy(x => x.bar);
for (int i = 0; i < foosPerItem; i++)
{
ordered = ordered.ThenByDescending(x => x.foo[i].Value);
}
Run Code Online (Sandbox Code Playgroud)