.NET排序列表<>与关联数组

时间:2012-02-27 11:10:17

标签: .net arrays list generics sorting

我想对List<string>进行排序,但同时对float[]数组进行排序:这是相关的值。 (我知道这是糟糕的设计,它在历史上是如此)。因此,无论何时在List中交换两个项目,我都希望交换数组中索引的值。有两种方法可以做到这一点:http://msdn.microsoft.com/en-us/library/aa311223%28v=vs.71%29.aspx 但是我找不到List和数组的任何东西:在某个地方有这样的方法吗?

3 个答案:

答案 0 :(得分:3)

您可以使用Zip(.NET 4.0及更高版本)合并列表和数组,并对结果执行排序。


更新

由于您使用的是.NET 3.5,因此您可以使用链接到的Array.Sort,将列表首先转换为数组:

var stringArray = myStringList.ToArray();
Array.Sort(stringArray, myFloatArray);

然而,我通常会这样做的方法是创建一个包含stringfloat的类型,并在通用集合中使用它来进行排序。

答案 1 :(得分:0)

Oded打败了我:我还打算建议将列表复制到SortedList<string, float>然后使用.Keys将列表排序回来并.Values将浮点数重新打开相应的订单。这些不会返回实际的List和数组,因此您可能需要.ToList.ToArray值,除非您可以将结果用作IListIEnumerable

您还可以编写一个自定义排序功能,将两个列表一起管理。或者只是咬紧牙关并重构代码以正确存储它们!

答案 2 :(得分:0)

或者,您可以ToArray列表并使用您在问题中提供的示例。完成后再new List<string>(stringArray)

不是我个人解决问题的方式,而是一种有效的替代方案。