簡體   English   中英

c#如何按值列對排序列表進行排序

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM