C# 如何使用多个OrderBy';s到LINQ中的未指定数字?

C# 如何使用多个OrderBy';s到LINQ中的未指定数字?,c#,linq,C#,Linq,所以我知道你可以像这样使用OrderBy和LINQ: MyList.OrderBy(x => x.foo[0].Value).ThenByDescending(x => x.foo[1].Value); 但是,我不知道x.foo将拥有多少个属性,我想按所有属性订购。这可能吗 编辑:在这个例子中,x.foo是一个KeyValuePair的列表,我在其中按键的顺序对值进行排序 前提是至少有一个项目,并且所有项目都有相同数量的“foo” int foosPerItem = MyList.

所以我知道你可以像这样使用OrderBy和LINQ:

MyList.OrderBy(x => x.foo[0].Value).ThenByDescending(x => x.foo[1].Value);
但是,我不知道x.foo将拥有多少个属性,我想按所有属性订购。这可能吗


编辑:在这个例子中,x.foo是一个KeyValuePair的列表,我在其中按键的顺序对值进行排序

前提是至少有一个项目,并且所有项目都有相同数量的“foo”

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);
int foosPerItem=MyList.First().Foo.Count;
IOrderedEnumerable ordered=MyList.OrderBy(x=>x.foo[0].Value);
for(int i=1;ix.foo[i].Value);
}
//在您的评论之后添加:
//有序=有序。然后按降序排列(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);
}
IOrderedEnumerable ordered=MyList.OrderBy(x=>x.bar);
for(int i=0;ix.foo[i].Value);
}

只需调用
,然后在循环中降序调用
。这是linq到对象还是linq到SQL?linq到对象FO是KeyValuePairs的列表s@AzzyDude所有的foo都有相同数量的条目吗?那么这应该行得通,你可能需要额外的代码来检查至少有一个条目,如果你想在多个不同的属性之间排序,你能不能只包括另一个'ordered=ordered.Then's,然后通过降序(x=>x.bar);在循环内?@AzzyDude,不要在循环内,否则你会得到重复的,但在循环后完全可能(代码更新)