C# 对子对象上的ArrayList进行排序';C中的s值#

C# 对子对象上的ArrayList进行排序';C中的s值#,c#,arrays,sorting,C#,Arrays,Sorting,我有一个ArrayList,它包含多个String[](字符串数组) 每个String[]都包含一个键:name 我要做的是根据name的值对ArrayList进行排序 使用Array.Sort无效,因为它无法比较String[]。如何根据字符串[]中的name值对ArrayList进行排序?试试这个 ArrayList arr = new ArrayList(); arr.ToArray().OrderBy(p => p); 试试这个 ArrayList arr = new Array

我有一个
ArrayList
,它包含多个
String[]
(字符串数组)

每个
String[]
都包含一个键:
name

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

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

试试这个

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

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

使用并编写自己的比较器,在字符串[]中查找您的键并进行比较。

使用并编写自己的比较器,在字符串[]中查找您的键并进行比较。

您可以创建一个
IComparer
用于

public virtual void Sort(
    IComparer comparer
)

您可以创建一个
IComparer
使用

public virtual void Sort(
    IComparer comparer
)

您可以传递到
Array.Sort
委托或实现实现所需自定义比较的接口的类。
参见一些示例。

您可以传递到
Array.Sort
委托或实现实现所需自定义比较的接口的类。 参见LINQ中的一些示例。

var ordered = arrayList.Cast<String[]>().OrderBy(ar => arr[0]);
var ordered=arrayList.Cast().OrderBy(ar=>arr[0]);
通常,最好使用强类型的
列表
,而不是
数组列表
。当你说key时,听起来好像你想为每个唯一的key设置一个字符串列表。那么一本
字典将是最好的选择。

在LINQ:

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

通常,最好使用强类型的
列表
,而不是
数组列表
。当你说key时,听起来好像你想为每个唯一的key设置一个字符串列表。那么一本
字典将是最好的选择。

你应该使用
列表。它支持
ArrayList
所做的一切,并且是强类型的

使用
列表

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

您应该使用
列表。它支持
ArrayList
所做的一切,并且是强类型的

使用
列表

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


为什么选择ArrayList?我从未见过列表不起作用的场景。键是每个
数组[]
中的第一个元素吗?如果是这样,您可以始终使用LINQ。是的,它始终是第一个元素,但不是唯一的元素。为什么我使用
ArrayList
还是
List
?排序问题仍然存在否?是的,但使用
List
更简单。为什么使用ArrayList?我从未见过列表不起作用的场景。键是每个
数组[]
中的第一个元素吗?如果是这样,您可以始终使用LINQ。是的,它始终是第一个元素,但不是唯一的元素。为什么我使用
ArrayList
还是
List
?排序问题仍然存在否?是的,但是使用
List
更简单。我想你的意思可能是
p=>p[0]
?我想你的意思可能是
p=>p[0]
?ArrayList没有实现
IEnumerable
。您需要
arrayList.Cast.OrderBy(arr=>arr[0])
;当然,1分钟。我应该每10秒刷新一次页面吗?:)在本例中,
ar
代表什么?列表中的
string[]
?@Pieter888:抱歉,这是一个输入错误:(更正。是字符串[]您仍然有一个输入错误
ar(r)=>arr[0]
ArrayList没有实现
IEnumerable
。您需要
ArrayList.Cast.OrderBy(arr=>arr[0])
;当然,1分钟。我应该每10秒刷新一次页面吗?:)在本例中,
ar
代表什么?列表中的
string[]
吗?@Pieter888:对不起,这是一个输入错误:(更正了。是字符串[]您仍然有一个输入错误
ar(r)=>arr[0]