我有ArrayList
,其中包含多个String[]
(字符串数组)。
每个String[]
都包含一个密钥:name
我想要做的是根据ArrayList
的值对name
进行排序。
使用Array.Sort
无效,因为无法比较String[]
。如何根据ArrayList
内的name
的值对String[]
进行排序?
答案 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
)
答案 5 :(得分:0)
您可以向Array.Sort
传递代理或实现实现所需自定义比较的接口的类。
请参阅一些示例http://bytes.com/topic/c-sharp/answers/235679-two-dimension-array-sort。