用类建立一个复杂的集合
一个简单的学生类 根据需要可以扩展
// 一个简单的学生类 根据需要可以扩展
// IComparable实现根据某一字段排序
public sealed class ClassInfo : IComparable
{
// 信息
public int Id { get; set; }
public string Name { get; set; }
public int Sex { get; set; }
public override string ToString()
{
return string.Format("学号:{0}、姓名:{1}、性别", Id, Name, Sex);
}
public int CompareTo(object obj)
{
if (obj is ClassInfo)
{
return Id.CompareTo(((ClassInfo)obj).Id);
}
return 1;
}
}
生成实例
public static List<ClassInfo> GetList()
{
var products = new List<ClassInfo> {
new ClassInfo { Id = 1, Name = "张三", Sex = 0},
new ClassInfo { Id = 3, Name = "王五", Sex = 0},
new ClassInfo { Id = 2, Name = "李四", Sex = 1}
};
return products;
}
对生成对象进行操作,例如分组,检索等
// 建立对象
List<ClassInfo> classInfo = GetList();
// 根据学号排序 使用类内部的CompareTo实现
classInfo.Sort();
// 根据姓名排序 用IComparer<ClassInfo>实现
classInfo.Sort((s1, s2) => s1.Name.CompareTo(s2.Name));
// 循环取得排序后的名字
classInfo.ForEach(s => Console.WriteLine(s.Name));
// ClassInfo.ToString()
classInfo[0].ToString();
// 根据性别分组(lamda表达式)
var groups = classInfo.GroupBy(p => p.Sex);
foreach (var group in groups)
{
// 每个分组中的元素数
int count = group.Count();
// group.Key 为分组的关键字 Sex
foreach (var item in group)
{
// item 为学生信息
}
}
// 查找学号为1的同学
// Find为符合条件第一条记录.FindAll为所有符合条件记录
var userInfo = classInfo.Find(p => p.Id == 1);
// 删除所有性别为男的同学
classInfo.RemoveAll(p => p.Sex == 1);
}
另:IComparer<ClassInfo>的实现如下
public class NameComparer : IComparer<ClassInfo>
{
public int Compare(ClassInfo x, ClassInfo y)
{
return x.Name.CompareTo(y.Name);
}
}
// 调用
classInfo.Sort(new NameComparer());

浙公网安备 33010602011771号