我想对List<string>
进行排序,但同时对float[]
数组进行排序:这是相关的值。 (我知道这是糟糕的设计,它在历史上是如此)。因此,无论何时在List中交换两个项目,我都希望交换数组中索引的值。有两种方法可以做到这一点:http://msdn.microsoft.com/en-us/library/aa311223%28v=vs.71%29.aspx
但是我找不到List和数组的任何东西:在某个地方有这样的方法吗?
答案 0 :(得分:3)
您可以使用Zip
(.NET 4.0及更高版本)合并列表和数组,并对结果执行排序。
更新
由于您使用的是.NET 3.5,因此您可以使用链接到的Array.Sort
,将列表首先转换为数组:
var stringArray = myStringList.ToArray();
Array.Sort(stringArray, myFloatArray);
然而,我通常会这样做的方法是创建一个包含string
和float
的类型,并在通用集合中使用它来进行排序。
答案 1 :(得分:0)
Oded打败了我:我还打算建议将列表复制到SortedList<string, float>
然后使用.Keys
将列表排序回来并.Values
将浮点数重新打开相应的订单。这些不会返回实际的List和数组,因此您可能需要.ToList
和.ToArray
值,除非您可以将结果用作IList
或IEnumerable
。
您还可以编写一个自定义排序功能,将两个列表一起管理。或者只是咬紧牙关并重构代码以正确存储它们!
答案 2 :(得分:0)
或者,您可以ToArray
列表并使用您在问题中提供的示例。完成后再new List<string>(stringArray)
。
不是我个人解决问题的方式,而是一种有效的替代方案。