gpt4 book ai didi

.net - 在 .Net 2.0 中对 IList 进行排序的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-04 16:33:00 24 4
gpt4 key购买 nike

我有一个 IList<T>我需要排序,如果可能,我宁愿不复制列表。我注意到 ArrayList有一个 Adapter包装传递的列表而不复制它的静态方法,但这需要一个 IList我有一个 IList<T> .从 System.Collections.Generic.IList<T> 转换是否安全到 System.Collections.IList只需使用 Adapter方法?

请注意,这是 .Net 2.0,因此 LINQ 不是一个选项。

最佳答案

我推荐来自 Paul Fox 的博客“如何对 IList 进行排序”:http://foxsys.blogspot.com/2007/06/how-to-sort-generic-ilist.html

以防万一该博客将来消失,我将在此处复制该帖子:

如何对通用 IList 进行排序

更新

您可以阅读和更新关于 sorting generic IList and List 的帖子.许多人会更喜欢更新后的帖子中提到的方法。

对通用 IList 进行排序

我试图对通用 IList<> 进行排序,并找到了一种相当简单的方法。

第1步

您需要为 IList 中包含的类型实现 IComparable。对于这个例子,我将使用一个简单的 Language Dto 类。

public class LanguageDto : IComparable {
private String name;
public string Name { get { return name; } set { name = value; } }

public LanguageDto(string name) {
this.name = name;
}

#region IComparable Members
public int CompareTo(object obj) {
if (obj is LanguageDto) {
LanguageDto language = (LanguageDto)obj;
return this.name.CompareTo(language.name);
}
throw new ArgumentException(string.Format("Cannot compare a LanguageDto to an {0}", obj.GetType().ToString()));
}
#endregion
}

第2步

对您的 IList 进行排序。为此,您将使用传入 IList 的 ArrayList.Adapter() 方法,然后调用 Sort 方法。像这样...
ArrayList.Adapter((IList)languages).Sort();

注意:语言是“IList”类型

语言应该是您类型的排序列表!

关于.net - 在 .Net 2.0 中对 IList<T> 进行排序的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/226981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com