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

.net编程

开发平台:

Others

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