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

我有一个类型为MyImageClass的generics集合,而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(); 

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

谢谢

怎么样:

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

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

您可以使用.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.Sort(x=>x.SomeProperty) list.SortDescending(x=>x.SomeProperty)