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个参数的定义,并在创建新项之前进行排序。