排序多个列表

时间:2015-05-04 15:27:59

标签: c# sorting

我有3个列表包含:索引,名称,年龄

示例:

List<int> indexList = new List<int>();
indexList.Add(3);
indexList.Add(1);
indexList.Add(2);
List<string> nameList = new List<string>();
nameList.Add("John");
nameList.Add("Mary");
nameList.Add("Jane");
List<int> ageList = new List<int>();
ageList.Add(16);
ageList.Add(17);
ageList.Add(18);

我现在必须根据indexList对所有3个列表进行排序。

如何对indexList使用.sort(),同时对其他2个列表进行排序

2 个答案:

答案 0 :(得分:17)

你正在以错误的方式看待它。创建自定义类:

class Person
{
     public int Index { get; set; }
     public string Name{ get; set; }
     public int Age{ get; set; }
}

然后,在List<Person>命名空间的OrderBy方法的帮助下对System.Linq进行排序:

List<Person> myList = new List<Person>() {
    new Person { Index = 1, Name = "John", Age = 16 };
    new Person { Index = 2, Name = "James", Age = 19 };
}
...

var ordered = myList.OrderBy(x => x.Index);

另外,您可以阅读有关反模式Jon Skeet article

答案 1 :(得分:3)

法哈德的回答是正确的,应该被接受。但如果您真的必须以这种方式对三个相关列表进行排序,则可以使用Enumerable.Zip和OrderBy:

var

之后,所有内容都按索引列表中的值排序。