CategoriesCollection.cs
上传用户:autodoor
上传日期:2022-08-04
资源大小:9973k
文件大小:1k
源码类别:

.net编程

开发平台:

Others

  1. using System;
  2. using System.Collections;
  3. namespace qminoa.BLL.PM
  4. {
  5. public class CategoriesCollection : ArrayList
  6. {
  7. public enum CategoryFields
  8. {
  9. Abbreviation,
  10. Duration,
  11. InitValue,
  12. Name
  13. }
  14. public void Sort(CategoryFields sortField, bool isAscending)
  15. {
  16. switch (sortField) 
  17. {
  18. case CategoryFields.Name:
  19. base.Sort(new NameComparer());
  20. break;
  21. case CategoryFields.Abbreviation:
  22. base.Sort(new AbbreviationComparer());
  23. break;
  24. case CategoryFields.Duration:
  25. base.Sort(new DurationComparer());
  26. break;
  27. }
  28. if (!isAscending) base.Reverse();
  29. }
  30. private sealed class NameComparer : IComparer 
  31. {
  32. public int Compare(object x, object y)
  33. {
  34. Category first = (Category) x;
  35. Category second = (Category) y;
  36. return first.Name.CompareTo(second.Name);
  37. }
  38. }
  39. private sealed class AbbreviationComparer : IComparer 
  40. {
  41. public int Compare(object x, object y)
  42. {
  43. Category first = (Category) x;
  44. Category second = (Category) y;
  45. return first.Abbreviation.CompareTo(second.Abbreviation);
  46. }
  47. }
  48. private sealed class DurationComparer : IComparer 
  49. {
  50. public int Compare(object x, object y)
  51. {
  52. Category first = (Category) x;
  53. Category second = (Category) y;
  54. return first.EstDuration.CompareTo(second.EstDuration);
  55. }
  56. }
  57. }
  58. }