[英]c# How to sort a sorted list by its value column
我有一个通用的排序列表“结果”,键 = 某个文件名,值 = 布尔值。
我想按布尔条目或值列对列表进行排序。 有谁知道我该怎么做?
谢谢!
SortedList 进行了优化,以便以有序的方式进行插入,从而以最小的成本以有序的顺序进行枚举。 其他任何事情都需要重新排序。 因此:
SortedList<string,bool> l = new SortedList<string, bool>();
l.Add("a", true);
l.Add("b", false);
l.Add("c", true);
l.Add("d", 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<MyObject> SortedObjects(IEnumerable<MyObject> myList) {
SortedList<string, MyObject> sortedList = new SortedList<string, MyObject>();
foreach (MyObject object in myList) {
sortedList.Add(object.ValueIWantToSort, object);
}
return new List<MyObject>(sortedList.Values);
}
通常按列表中的第一个键排序,因此如果您在添加时交换键和值,然后在我使用的示例示例的绑定上匹配它并且工作正常
public static SortedList<string, string> GetCountries(string conn)
{
var dict = new SortedList<string, string>();
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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.