TimeEntriesCollection.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 TimeEntriesCollection : ArrayList
  6. {
  7. public enum TimeEntryFields
  8. {
  9. InitValue,
  10. Day, 
  11. Category, 
  12. Project, 
  13. Hours, 
  14. Description
  15. }
  16. public void Sort(TimeEntryFields sortField, bool isAscending)
  17. {
  18. switch (sortField) 
  19. {
  20. case TimeEntryFields.Day:
  21. base.Sort(new DayComparer());
  22. break;
  23. case TimeEntryFields.Category:
  24. base.Sort(new CategoryComparer());
  25. break;
  26. case TimeEntryFields.Description:
  27. base.Sort(new DescriptionComparer());
  28. break;
  29. case TimeEntryFields.Hours:
  30. base.Sort(new HoursComparer());
  31. break;
  32. case TimeEntryFields.Project:
  33. base.Sort(new ProjectComparer());
  34. break;
  35. }
  36. if (!isAscending) base.Reverse();
  37. }
  38. private sealed class DayComparer : IComparer 
  39. {
  40. public int Compare(object x, object y)
  41. {
  42. TimeEntry first = (TimeEntry) x;
  43. TimeEntry second = (TimeEntry) y;
  44. return first.EntryDate.CompareTo(second.EntryDate);
  45. }
  46. }
  47. private sealed class CategoryComparer : IComparer 
  48. {
  49. public int Compare(object x, object y)
  50. {
  51. TimeEntry first = (TimeEntry) x;
  52. TimeEntry second = (TimeEntry) y;
  53. return first.CategoryName.CompareTo(second.CategoryName);
  54. }
  55. }
  56. private sealed class ProjectComparer : IComparer 
  57. {
  58. public int Compare(object x, object y)
  59. {
  60. TimeEntry first = (TimeEntry) x;
  61. TimeEntry second = (TimeEntry) y;
  62. return first.ProjectName.CompareTo(second.ProjectName);
  63. }
  64. }
  65. private sealed class DescriptionComparer : IComparer 
  66. {
  67. public int Compare(object x, object y)
  68. {
  69. TimeEntry first = (TimeEntry) x;
  70. TimeEntry second = (TimeEntry) y;
  71. return first.Description.CompareTo(second.Description);
  72. }
  73. }
  74. private sealed class HoursComparer : IComparer 
  75. {
  76. public int Compare(object x, object y)
  77. {
  78. TimeEntry first = (TimeEntry) x;
  79. TimeEntry second = (TimeEntry) y;
  80. return first.Duration.CompareTo(second.Duration);
  81. }
  82. }
  83. }
  84. }