如何在LINQ中将多个OrderBy用于未指定的数字?

Azz*_*ude 4 c# linq

所以我知道你可以像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的列表,我按照键的顺序按值排序.

vc *_* 74 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);
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)