在C#中对子项的值排序ArrayList

时间:2012-04-19 12:08:40

标签: c# arrays sorting

我有ArrayList,其中包含多个String[](字符串数组)。

每个String[]都包含一个密钥:name

我想要做的是根据ArrayList的值对name进行排序。

使用Array.Sort无效,因为无法比较String[]。如何根据ArrayList内的name的值对String[]进行排序?

6 个答案:

答案 0 :(得分:4)

在LINQ中:

var ordered = arrayList.Cast<String[]>().OrderBy(ar => arr[0]);

通常最好使用强类型List<String[]>而不是ArrayList。当您说 key 时,听起来好像您想要为每个唯一键设置一个字符串列表。然后Dictionary<String, String[]>将是最佳选择。

答案 1 :(得分:1)

您应该使用List<string[]>。它支持ArrayList所做的一切,并且是强类型的。

使用List<string[]>

IEnumerable<string[]> sorted = myList.OrderBy(s => s[0]);

答案 2 :(得分:0)

试试这个

ArrayList arr = new ArrayList();
arr.ToArray().OrderBy(p => p);

答案 3 :(得分:0)

使用Array.Sort(Array,IComparer)并编写自己的Comparer,在String []中查找您的密钥并进行比较。

答案 4 :(得分:0)

您可以创建IComparer使用

public virtual void Sort(
    IComparer comparer
)

http://msdn.microsoft.com/en-us/library/0e743hdt.aspx

答案 5 :(得分:0)

您可以向Array.Sort传递代理或实现实现所需自定义比较的接口的类。 请参阅一些示例http://bytes.com/topic/c-sharp/answers/235679-two-dimension-array-sort