对两个列表进行相同排序

时间:2012-10-30 16:56:20

标签: c# list sorting tuples

我有一个字符串列表和一个整数列表。它们以“对”形式出现,即在索引处,给定的字符串和整数仍然必须“匹配”。我需要按降序对整数进行排序,并使字符串排序相同,因此对完整。我想最好的实现方法可能是将它们放入List>中,但我不确定如何通过第二个Tuple项进行排序。

4 个答案:

答案 0 :(得分:3)

最简单的方法是将它们放入单个List,然后订购该列表:

List<string> list = new List<string>() { "A", "C", "T", "F" };
List<int> list2 = new List<int>() { 5, 4, 3, 2 };

var results = list.Zip(list2, (a, b) => new
{
    str = a,
    num = b
})
.OrderBy(pair=> pair.num);

如果你真的需要一个只有字符串的列表,你可以使用Select让它们退出,但希望在整个程序中只有一个更复杂对象的列表是有意义的。 (考虑制作一个实际的课程,而不是使用匿名课程,如果你那样做。)

答案 1 :(得分:0)

.NET具有SortedDictionary数据类型。

http://msdn.microsoft.com/en-us/library/f7fta44c%28v=vs.90%29.aspx

我只是加载它们,你应该很好。

答案 2 :(得分:0)

如果你有一个元组列表,你可以像这样订购它们

myList.OrderBy(x => x.Item2);

答案 3 :(得分:0)

我会创建一个带有字符串和整数属性的小“对”类。您可以实现IComparable()以确保通过Integer属性比较此类。然后,您可以将它们填充到通用List:var pairs = new List<Pair>()对象中,并使用sort方法对它们进行排序:pairs.Sort();