我有一个IList<T>
我需要排序,如果可能的话我宁愿不复制列表。我注意到了ArrayList
has an Adapter
包装传递的列表而不复制它的静态方法,但这需要一个IList
我有一个IList<T>
。从以下位置投射是否安全System.Collections.Generic.IList<T>
to a System.Collections.IList
只需使用Adapter
method?
请注意,这是 .Net 2.0,因此 LINQ 不是一个选项。
在 Paul Fox 的博客中,我推荐了“如何对 IList 进行排序”的文章:http://foxsys.blogspot.com/2007/06/how-to-sort-generic-ilist.html http://foxsys.blogspot.com/2007/06/how-to-sort-generic-ilist.html
以防万一该博客将来消失,我将在此处复制该帖子:
如何对通用 IList 进行排序
Update
您可以阅读并更新有关的帖子对通用 IList 和 List 进行排序 http://foxsys.blogspot.com/2008/05/how-to-sort-generic-list-sorting-list.html。许多人会更喜欢更新后的帖子中提到的方法。
对通用 IList 进行排序
我试图对通用 IList 进行排序,并找到了一种相当简单的方法。
Step 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
}
STEP 2
对 IList 进行排序。为此,您将使用传入 IList 的 ArrayList.Adapter() 方法,然后调用 Sort 方法。就像这样...
ArrayList.Adapter((IList)languages).Sort();
注意:语言的类型为“IList”
语言应该是您类型的排序列表!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)