categoriescollection.cs
来自「Time Tracker Starter Kit 使您能轻松创建这样一个应用程序」· CS 代码 · 共 76 行
CS
76 行
using System;
using System.Collections;
namespace ASPNET.StarterKit.TimeTracker.BusinessLogicLayer
{
//*********************************************************************
//
// CategoriesCollection Class
//
// The CategoriesCollection Class inherits from ArrayList. It has its own implemenation
// of Sort based on the sortable Category fields.
//
//*********************************************************************
public class CategoriesCollection : ArrayList
{
public enum CategoryFields
{
Abbreviation,
Duration,
InitValue,
Name
}
public void Sort(CategoryFields sortField, bool isAscending)
{
switch (sortField)
{
case CategoryFields.Name:
base.Sort(new NameComparer());
break;
case CategoryFields.Abbreviation:
base.Sort(new AbbreviationComparer());
break;
case CategoryFields.Duration:
base.Sort(new DurationComparer());
break;
}
if (!isAscending) base.Reverse();
}
private sealed class NameComparer : IComparer
{
public int Compare(object x, object y)
{
Category first = (Category) x;
Category second = (Category) y;
return first.Name.CompareTo(second.Name);
}
}
private sealed class AbbreviationComparer : IComparer
{
public int Compare(object x, object y)
{
Category first = (Category) x;
Category second = (Category) y;
return first.Abbreviation.CompareTo(second.Abbreviation);
}
}
private sealed class DurationComparer : IComparer
{
public int Compare(object x, object y)
{
Category first = (Category) x;
Category second = (Category) y;
return first.EstDuration.CompareTo(second.EstDuration);
}
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?