当前位置:  开发笔记 > 编程语言 > 正文

如何根据T的属性对List <T>进行排序?

如何解决《如何根据T的属性对List<T>进行排序?》经验,为你挑选了2个好方法。

我的代码看起来像这样:

Collection optionInfoCollection = ....
List optionInfoList = new List();
optionInfoList = optionInfoCollection.ToList();

if(_isAlphabeticalSoting)
   Sort optionInfoList

我尝试了optionInfoList.Sort()但它无法正常工作.



1> m-sharp..:

使用sort方法和lambda表达式非常简单.

myList.Sort((a, b) => String.Compare(a.Name, b.Name))

上面的示例显示了如何按对象类型的Name属性进行排序,假设Name的类型为string.



2> Marc Gravell..:

如果你只是想Sort()工作,那么你需要实现IComparableIComparable在课堂上.

如果您不介意创建列表,可以使用OrderBy/ ToListLINQ扩展方法.如果要使用更简单的语法对现有列表进行排序,可以添加一些扩展方法,从而启用:

list.Sort(item => item.Name);

例如:

public static void Sort(
    this List source,
    Func selector)
{
    var comparer = Comparer.Default;
    source.Sort((x, y) => comparer.Compare(selector(x), selector(y)));
}
public  static void SortDescending(
    this List source,
    Func selector)
{
    var comparer = Comparer.Default;
    source.Sort((x, y) => comparer.Compare(selector(y), selector(x)));
}

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有