c# How to sort a sorted list by its value column

本小妞迷上赌 提交于 2019-12-18 07:46:13

问题


i have a generic sorted list "results" with key = some filename and value = boolean.

I would like to sort the list by the boolean entry or value column. does anyone know how i can do this?

Thanks!


回答1:


SortedList is optimized so that inertions occur in an ordered fashion, such that enumeration occurs in a sorted order at minimal cost. Anything else requires a re-sort. Thus:

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

but this enumeration will be significantly slower to calculate, and be performed up-front, requiring extra storage to do so.

Depending on your situation it might be cheaper to maintain 2 SortedList instances with the key/value reversed.




回答2:


For descending all list items

list.OrderByDescending(); 

or

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



回答3:


In .NET 2.0, you could add your items to a 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);
  }



回答4:


Normally that sorted by the first key on the list so if you swap the key and value on the add, then match that on the binding that sample example i use and work fine

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()


来源:https://stackoverflow.com/questions/1250281/c-sharp-how-to-sort-a-sorted-list-by-its-value-column

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!