c#如何按值列对排序列表进行排序

我有一个通用的排序列表“结果”与key = some filename和value = boolean。

我想按布尔条目或值列对列表进行排序。 有谁知道我怎么做到这一点?

谢谢!

SortedList经过优化,因此惯性以有序的方式发生,因此枚举以最低成本按排序顺序发生。 其他任何东西都需要重新排序。 从而:

SortedList l=new SortedList(); l.Add("a",true); l.Add("a",false); l.Add("b",true); l.Add("b",false); var orderByVal=l.OrderBy(kvp => kvp.Value); 

但是这个枚举的计算速度会慢得多,并且可以预先执行,需要额外的存储才能完成。

根据您的情况,维护2个SortedList实例并使键/值反转可能更便宜。

用于降序所有列表项

 list.OrderByDescending(); 

要么

 var list = list.OrderByDescending(x => x.Product.Name) .ThenBy(x => x.Product.Price).ToList(); 

在.NET 2.0中,您可以将项目添加到SortedList:

  public static List SortedObjects(IEnumerable myList) { SortedList sortedList = new SortedList(); foreach (MyObject object in myList) { sortedList.Add(object.ValueIWantToSort, object); } return new List(sortedList.Values); } 

通常按列表中的第一个键排序,所以如果你在add上交换键和值,那么匹配我使用的示例示例的绑定上的那个并正常工作

 public static SortedList GetCountries(string conn) { var dict = new SortedList(); dict.Add("","Select One"); var sql = "SELECT [CountryID] ,[Descr] FROM [dbo].[Countries] Order By CountryID "; using (var rd = GetDataReader(conn, sql)) { while (rd.Read()) { dict.Add(rd["Descr"].ToString(), rd["CountryID"].ToString()); } } return dict; } Dim List As SortedList(Of String, String) = VDB.CoreLib.DbUtils.GetCountries(connDB) ddlBankCountry.DataSource = List ddlBankCountry.DataTextField = "Key" ddlBankCountry.DataValueField = "Value" ddlBankCountry.DataBind()