Thursday, April 21, 2011

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

Hi, 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!

From stackoverflow
  • 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.

  • 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);
      }
    

0 comments:

Post a Comment

Note: Only a member of this blog may post a comment.