在C#中遍历和排序对象集合
来源:互联网 发布:尤克里里推荐 知乎 编辑:程序博客网 时间:2024/05/17 21:38
原文地址:http://www.dingos.cn/index.php?topic=2007.0
using System;
using System.Collections;
//Class Employee
class Employee {
public string EmpName;
public string Dept;
public Employee(string szName, string szDept) {
EmpName = szName;
Dept = szDept;
}
}
//Declare the class to be implement IEnumerable
//Employees class contains the Employees list and enumeration will result in going thru employees
class Employees {
//Declare a member of Employees
public ArrayList oEmployees;
//Constructor for Employees
public Employees() {
oEmployees = new ArrayList();
}
//Declare a enumerator member
class EnumEmployee : IEnumerator {
//Declare a variable to hold current index
//Declare a variable of Enumerable class that is Employee
public int CurrentIndex;
public Employees oEmpList;
//Constructor
public EnumEmployee(Employees oEmps) {
oEmpList = oEmps;
CurrentIndex = -1;
}
//Declare a method to get the current employee
// Mandatorily implemented...Dont change the name
public object Current {
get {
return oEmpList.oEmployees[CurrentIndex];
}
}
//Handle movenext : Mandatorily implemented...Dont change the name
public bool MoveNext() {
if(CurrentIndex < oEmpList.oEmployees.Count - 1) {
CurrentIndex++;
return true;
} else
return false;
}
//Reset the variable : Mandatorily implemented...Dont change the name
public void Reset() {
CurrentIndex = -1;
}
}
//Class for Comparison
//Member for sort order
public enum EmployeeSortOrder { eSortNameDesc, eSortNameAsc, eSortDeptDesc, eSortDeptAsc };
class EmployeesSort : IComparer {
//Sort order
private int SortOrder;
//Constructor
public EmployeesSort(int Sort) {
SortOrder = Sort;
}
//Implement Compare function
public int Compare(object oEmployee1, object oEmployee2) {
switch(SortOrder) {
case (int)EmployeeSortOrder.eSortNameDesc:
return ((Employee)(oEmployee2)).EmpName.CompareTo(
((Employee)(oEmployee1)).EmpName);
case (int)EmployeeSortOrder.eSortNameAsc:
return ((Employee)(oEmployee1)).EmpName.CompareTo(
((Employee)(oEmployee2)).EmpName);
case (int)EmployeeSortOrder.eSortDeptDesc:
return ((Employee)(oEmployee2)).Dept.CompareTo(
((Employee)(oEmployee1)).Dept);
case (int)EmployeeSortOrder.eSortDeptAsc:
return ((Employee)(oEmployee1)).Dept.CompareTo(
((Employee)(oEmployee2)).Dept);
default:
return ((Employee)(oEmployee1)).EmpName.CompareTo(
((Employee)(oEmployee2)).EmpName);
}
}
}
//Write a function to get the enumerator
public IEnumerator GetEnumerator() {
return new EnumEmployee(this);
}
//Write a function to call sort
public void SortEmployees(int SortType) {
oEmployees.Sort(new EmployeesSort(SortType));
}
//Now.....use the enumeration :-))
public static void Main() {
Employee oTemp;
//Create the Employees class
Employees oEmpList = new Employees();
//Add Employees to the oEmployees member
oEmpList.oEmployees.Add(new Employee("Lalitha", "SE"));
oEmpList.oEmployees.Add(new Employee("Lal", "Associate"));
oEmpList.oEmployees.Add(new Employee("KLA", "Executive"));
//Now....loop using foreach
Console.WriteLine("Using ForEach");
Console.WriteLine("----- -------");
foreach(Employee oEmp in oEmpList.oEmployees)
Console.WriteLine(oEmp.EmpName);
//Sort the Employees list
oEmpList.SortEmployees(1);
//Alright....Try enumeration...
//Get the enumerator and start enumeration
IEnumerator e = oEmpList.GetEnumerator();
Console.WriteLine("/n/n Using Enumerator");
Console.WriteLine("----- ----------/n");
while(e.MoveNext()) {
oTemp = (Employee)(e.Current);
Console.WriteLine(oTemp.EmpName + " " + oTemp.Dept);
oTemp = null;
}
}
}
- 在C#中遍历和排序对象集合
- 集合遍历和数组排序
- ASP中遍历和操作Application对象的集合
- ASP中遍历和操作Application对象的集合
- 在Java中对集合当中的对象进行排序
- 在Java中对集合当中的对象进行排序
- 通过jdbcTemplate如何返回自定义的对象集合,以及在java中如何遍历这个集合
- java集合中对象排序
- Java集合中对象排序
- Java集合中对象排序
- c#中对集合排序
- C#3.0中对象初始化器和集合初始化器
- javascript中遍历List集合对象
- javascript中遍历对象的List集合
- $.each()遍历数组和集合对象
- C#在dataGridView中遍历
- C#在dataGridView中遍历
- .NET/C#中对自定义对象集合进行自定义排序的方法
- 映射时间(Temporal)类型@Temporal
- error C2099: initializer is not a constant
- SQL Server 2005之PIVOT/UNPIVOT行列转换
- Jquery中的Jquery.extend, Jquery.fn.extend,Jquery.prototype
- 移动Panel的滚动条到窗口中间
- 在C#中遍历和排序对象集合
- 页面上有 activex控件,但是就是不显示下载对话框,也不可以使用,
- 合并文件
- 开发中遇到的flex安全沙箱的问题
- struts2.1.8研究(一)
- LAMP安装前的准备工作
- 镇定的对待每一件事
- 一切是真的吗?还能继续吗?为什么爱我却选择伤我,知道吗?那天,我哭了,我很伤心!
- 转载《计算机世界》文章《警惕部分SSL证书安全缺陷》