Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何按字母顺序对每个对象包含1个以上参数的ArrayList进行排序?_C#_Sorting_Arraylist - Fatal编程技术网

C# 如何按字母顺序对每个对象包含1个以上参数的ArrayList进行排序?

C# 如何按字母顺序对每个对象包含1个以上参数的ArrayList进行排序?,c#,sorting,arraylist,C#,Sorting,Arraylist,问候语(不知道标题是否有意义) 我有一个ArrayList,其中可以包含不同数量的对象 范例 private ArrayList items = new ArrayList(); var list = web.Lists[ListName]; items.Add(new { GroupName = value }); foreach (SPListItem item in list.Items) { items.Add(new { GroupName = value, ItemID =

问候语(不知道标题是否有意义)

我有一个
ArrayList
,其中可以包含不同数量的对象

范例

private ArrayList items = new ArrayList();
var list = web.Lists[ListName];

items.Add(new { GroupName = value });

foreach (SPListItem item in list.Items)
{
   items.Add(new { GroupName = value, ItemID = item.ID, ItemName = item.Name });
}
正如您在上面看到的,我有一个只包含
GroupName
的对象,然后是一个包含
GroupName
ItemID
ItemName

我要做的是按照它们的
ItemName
对所有项目进行排序


当它只有一个参数时,我对排序没有问题,但是当它有多个参数时,我就不知所措了。如何执行此操作?

编辑:在添加到新arraylist之前进行排序

foreach(SPListItem item in list.Items.Cast<SPListItem>.OrderBy(i => i.Name))
{
   items.Add(new { GroupName = value, ItemID = item.ID, ItemName = item.Name });
}
foreach(list.Items.Cast.OrderBy(i=>i.Name)中的SPListItem项)
{
添加(新的{GroupName=value,ItemID=item.ID,ItemName=item.Name});
}
更新的编辑: 如果您只需要一个可枚举集合(没有arraylist,在arraylist中您无法轻松地从中提取项),那么可以使用LINQ Select操作符

var items = ist.Items.Cast<SPListItem>.OrderBy(i => i.Name).Select(i => new { GroupName = value, ItemID = i.ID, ItemName = i.Name });
var items=ist.items.Cast.OrderBy(i=>i.Name)。选择(i=>new{GroupName=value,ItemID=i.ID,ItemName=i.Name});

@Ziga,如果您给出一个示例,说明您希望排序的内容和结果顺序,这会有所帮助。您是否可以使用键入的
列表
,而不是非键入的
数组列表
?您是否可以使用LINQ?不包含
项目名的项目应该先到还是后到?@Juliet否,因为正如你在我的帖子中看到的,对象可以从只有一个paratemer变为包含3个参数。因此,我无法将其指定为如此简单。@但我收到以下错误:System.InvalidCastException:无法将类型为“f_uAnonymousType0`1[System.String]”的对象强制转换为类型为“Microsoft.SharePoint.SPListItem”。哦,您使用的是anonymousType,我认为您使用的是SPListItem类型。您可以做的一件事是命名匿名类型,然后将其转换为正确的格式。如果将其命名为Item,则应将其转换为Item,而不是SPListItem@Yet你能给我一个你的意思的例子吗?我已经重新更新了我的答案,在你创建匿名类型之前进行排序。(但当您试图从arraylist中获取匿名类型的数据时,可能会遇到麻烦,因为您无法强制转换为匿名类型)@谢谢您的帮助。我决定使用一个自定义类,该类包含4个参数的定义,并在创建新项之前进行排序。