code_junkie

What is the best way to sort an IList<T> in .Net 2.0?

Nov 11th, 2011
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.55 KB | None | 0 0
  1. public class LanguageDto : IComparable {
  2. private String name;
  3. public string Name { get { return name; } set { name = value; } }
  4.  
  5. public LanguageDto(string name) {
  6. this.name = name;
  7. }
  8.  
  9. #region IComparable Members
  10. public int CompareTo(object obj) {
  11. if (obj is LanguageDto) {
  12. LanguageDto language = (LanguageDto)obj;
  13. return this.name.CompareTo(language.name);
  14. }
  15. throw new ArgumentException(string.Format("Cannot compare a LanguageDto to an {0}", obj.GetType().ToString()));
  16. }
  17. #endregion
  18. }
  19.  
  20. ArrayList.Adapter((IList)languages).Sort();
  21.  
  22. object[] array = new object[count];
  23. this.CopyTo(index, array, 0, count);
  24. Array.Sort(array, 0, count, comparer);
  25. for (int i = 0; i < count; i++)
  26. {
  27. this._list[i + index] = array[i];
  28. }
  29.  
  30. IList<object> unsorted = ...
  31. List<object> sorted = new List<object>(unsorted);
  32. sorted.Sort();
  33. for (int i = 0; i < unsorted.Countt; i++)
  34. {
  35. unsorted[i] = sorted[i];
  36. }
  37.  
  38. interface ISortableList<T> : IList<T>
  39. {
  40. void Sort();
  41. void Sort(IComparer<T> comparer);
  42. }
  43.  
  44. class SortableList<T> : List<T>, ISortableList<T> { }
  45.  
  46. /* usage */
  47. void Example(ISortedList<T> list)
  48. {
  49. list.Sort();
  50. list.Sort(new MyCustomerComparer());
  51. }
  52.  
  53. void Example(IList<T> list)
  54. {
  55. list = new List<T>(list).Sort();
  56. }
  57.  
  58. var sortedProducts =
  59. from p in products
  60. orderby p.ProductName
  61. select p;
  62.  
  63. ObjectDumper.Write(sortedProducts);
  64.  
  65. string[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
  66.  
  67. var sortedDigits =
  68. from d in digits
  69. orderby d.Length, d
  70. select d;
Add Comment
Please, Sign In to add comment