public List<sp_GetEmployeesForPRResult> Sort(List<sp_GetEmployeesForPRResult> empList, string sortColumn, string sortOrder) { int order; DepartmentDao depDao = new DepartmentDao(); if (sortOrder == "desc") { order = -1; } else { order = 1; } switch (sortColumn) { case "ID": empList.Sort( delegate(sp_GetEmployeesForPRResult m1, sp_GetEmployeesForPRResult m2) { return m1.ID.CompareTo(m2.ID) * order; }); break; case "NextReviewDate": empList.Sort( delegate(sp_GetEmployeesForPRResult m1, sp_GetEmployeesForPRResult m2) { DateTime? date1 = GetNextReviewDate(m1.ID); DateTime? date2 = GetNextReviewDate(m2.ID); if (!date1.HasValue) date1 = DateTime.MinValue; if (!date2.HasValue) date2 = DateTime.MinValue; return date1.Value.CompareTo(date2.Value) * order; }); break; case "Department": empList.Sort( delegate(sp_GetEmployeesForPRResult m1, sp_GetEmployeesForPRResult m2) { string d1 = depDao.GetDepartmentNameBySub(m1.DepartmentId); string d2 = depDao.GetDepartmentNameBySub(m2.DepartmentId); return d1.CompareTo(d2) * order; }); break; case "LoginName": empList.Sort( delegate(sp_GetEmployeesForPRResult m1, sp_GetEmployeesForPRResult m2) { string s1 = FullName(m1.ID, Constants.FullNameFormat.FirstMiddleLast); string s2 = FullName(m2.ID, Constants.FullNameFormat.FirstMiddleLast); return s1.CompareTo(s2) * order; }); break; case "ManagerLoginName": empList.Sort( delegate(sp_GetEmployeesForPRResult m1, sp_GetEmployeesForPRResult m2) { string s1 = string.IsNullOrEmpty(m1.ManagerId) ? "" : FullName(m1.ManagerId, Constants.FullNameFormat.FirstMiddleLast); string s2 = string.IsNullOrEmpty(m2.ManagerId) ? "" : FullName(m2.ManagerId, Constants.FullNameFormat.FirstMiddleLast); return s1.CompareTo(s2) * order; }); break; } return empList; }