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

如何对Generic List Asc或Desc进行排序?

如何解决《如何对GenericListAsc或Desc进行排序?》经验,为你挑选了2个好方法。

我有一个类型为MyImageClass的泛型集合,而MyImageClass有一个布尔属性"IsProfile".我想对这个通用列表进行排序,其中IsProfile == true代表列表的开头.

我试过这个.

rptBigImages.DataSource = estate.Images.OrderBy(est=>est.IsProfile).ToList();

使用图像上方的代码,最后一个IsProfile属性为true.但我希望它成为第一个指数.我需要一些Asc或Desc.然后我做了这个.

rptBigImages.DataSource = estate.Images.OrderBy(est=>est.IsProfile).Reverse.ToList();

有没有更简单的方法来做到这一点?

谢谢



1> Ray Booysen..:

怎么样:

estate.Images.OrderByDescending(est => est.IsProfile).ToList()

这将通过IsProfile属性按降序对图像进行排序,然后从结果中创建新的List.



2> Marc Gravell..:

您可以使用.OrderByDescending(...) - 但请注意,使用LINQ方法,您将创建一个新的有序列表,而不是对现有列表进行排序.

如果您有List并且想要重新订购现有列表,那么您可以使用Sort()- 并且您可以通过添加一些扩展方法来简化:

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

然后你可以使用list.Sort(x=>x.SomeProperty)list.SortDescending(x=>x.SomeProperty).

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