📄 projectcomparation.cs
字号:
using System;
using System.Collections.Generic;
namespace
ASPNET.StarterKit.BusinessLogicLayer {
/// <summary>
/// 自定义的排序比较器
/// </summary>
public class ProjectComparer : IComparer<Project> {
/***私有字段****/
private string _sortColumn;
private bool _reverse;
/***构造函数****/
/// <summary>
/// 构造函数,传入按指定排序字符串,例如:CompletionDate desc或者是Description
/// </summary>
/// <param name="sortEx"></param>
public ProjectComparer(string sortEx) {
if (!String.IsNullOrEmpty(sortEx))
{
_reverse = sortEx.ToLowerInvariant().EndsWith(" desc");
if (_reverse)
_sortColumn = sortEx.Substring(0, sortEx.Length - 5);
else
_sortColumn = sortEx;
}
}
/****方法*******/
/// <summary>
/// 判断两个项目是否相等
/// </summary>
/// <param name="x"></param>
/// <param name="y"></param>
/// <returns></returns>
public bool Equals(Project x, Project y) {
if (x.Id == y.Id) {
return true;
}
else {
return false;
}
}
/// <summary>
/// 比较两个项目。实现IComparer接口的方法
/// </summary>
/// <param name="x"></param>
/// <param name="y"></param>
/// <returns></returns>
public int Compare(Project x, Project y) {
int retVal = 0;
switch (_sortColumn) {
//如果排序列是CompletionDate,表示按完成时间排序
case "CompletionDate":
retVal = DateTime.Compare(x.CompletionDate, y.CompletionDate);
break;
//如果排序列是Description,表示按项目描述排序
case "Description":
retVal = String.Compare(x.Description, y.Description, StringComparison.InvariantCultureIgnoreCase);
break;
//如果排序列是EstimateDuration,表示按预估时间排序
case "EstimateDuration":
retVal = (int)(x.EstimateDuration - y.EstimateDuration);
break;
//如果排序列是Id,表示按项目ID排序
case "Id":
retVal = (x.Id - y.Id);
break;
//如果排序列是ManagerUserName,表示按项目经理排序
case "ManagerUserName":
retVal = String.Compare(x.ManagerUserName, y.ManagerUserName, StringComparison.InvariantCultureIgnoreCase);
break;
//如果排序列是Name,表示按项目名称排序
case "Name":
retVal = String.Compare(x.Name, y.Name, StringComparison.InvariantCultureIgnoreCase);
break;
}
return (retVal * (_reverse ? -1 : 1));
}
public int GetHashCode(Project obj) {
// TODO: Implement this, but it's not necessary for sorting
return 0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -