一、List<T> 中T为封装内容的排序
①编写学生类、
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DelegateAndEvent
{
class Student
{
//字段:名字
public string name;
//字段:年龄
public int age;
//字段:分数
public int score;
//构造函数
public Student(string externName,int externAge,int externScore)
{
this.name = externName;
this.age = externAge;
this.score = externScore;
}
//方法:自我介绍
public void SelfIntroduce()
{
Console.WriteLine("姓名:{0},年龄:{1},分数:{2}",this.name,this.age,this.score);
}
//方法:比较两个学生的年龄
public static int AgeCompare(Student firsStudent,Student scondStudent)
{
return firsStudent.age - scondStudent.age;
}
//方法:比较两个学生的分数
public static int ScoreCompare(Student firsStudent, Student scondStudent)
{
return firsStudent.score - scondStudent.score;
}
}//Class_end
}
②测试排序方法(实现方法1)
//排序测试
static void ListSortTest()
{
Student student1 = new Student("叶修", 21, 69);
Student student2 = new Student("王维", 18, 72);
Student student3 = new Student("张宇", 23, 80);
Student student4 = new Student("建国", 26, 88);
Student student5 = new Student("华夏", 18, 99);
List<Student> students = new List<Student>();
students.Add(student1);
students.Add(student2);
students.Add(student3);
students.Add(student4);
students.Add(student5);
//从小到大排序(升序)
students = students.OrderBy(tt=>(tt.age)).ToList();
从大到小排序(降序)
//students.Reverse();
Student min = students.First();
Student max = students.Last();
foreach (var item in students)
{
Console.WriteLine("姓名:{0},年龄:{1},成绩: {2}",item.name,item.age,item.score);
}
Console.WriteLine("最小年龄:{0},最大年龄:{1}",min.age,max.age);
}
③输出结果
④测试排序方法(实现方法2)
static void ListSortTest()
{
Student student1 = new Student("叶修", 21, 69);
Student student2 = new Student("王维", 18, 72);
Student student3 = new Student("张宇", 23, 80);
Student student4 = new Student("建国", 26, 88);
Student student5 = new Student("华夏", 18, 99);
List<Student> students = new List<Student>();
students.Add(student1);
students.Add(student2);
students.Add(student3);
students.Add(student4);
students.Add(student5);
//从小到大排序(升序)
//students = students.OrderBy(tt=>(tt.age)).ToList();
从大到小排序(降序)
//students.Reverse();
//从小到大排序(升序)
students.Sort(Student.AgeCompare);
从大到小排序(降序)
//students.Reverse();
Student min = students.First();
Student max = students.Last();
foreach (var item in students)
{
Console.WriteLine("姓名:{0},年龄:{1},成绩:{2}",item.name,item.age,item.score);
}
Console.WriteLine("最小年龄:{0},最大年龄:{1}",min.age,max.age);
}
⑤输出结果
二、List<T> 中T为数据类型的排序
①测试排序方法
//排序测试
static void ListSortTest()
{
List<int> listNumTest = new List<int>(){14,21,16,35,17,54,84,156,78,16};
//排序(升序)
listNumTest.Sort(CompareFunc);
int min1 = listNumTest.First();
int max1 = listNumTest.Last();
foreach (var item in listNumTest)
{
Console.WriteLine("值:{0}", item);
}
Console.WriteLine("最小值:{0},最大值:{1}", min1, max1);
//反转排序(降序)
listNumTest.Reverse();
int max2 = listNumTest.First();
int min2 = listNumTest.Last();
foreach (var item in listNumTest)
{
Console.WriteLine("值:{0}", item);
}
Console.WriteLine("最小值:{0},最大值:{1}", min2, max);
}
②输出结果