[英]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.