一、构建数据
public class Student_1 { public int ID { get; set; } public string Name { get; set; } public int Chinese { get; set; } public int Math { get; set; } public int English { get; set; } public override string ToString() { return string.Format("ID:{0},Name:{1},Chinese:{2},Math:{3},English:{4}", ID, Name, Chinese, Math, English); } }
构建一个student的数据类型,其中包括ID、name等属性。在该类内对tostring()方法进行了重写,通过tostring()可以对类内数据进行输出。
static void Main(string[] args) { List<Student_1> stuList = new List<Student_1>() { new Student_1(){ID=1,Name="John",Chinese=92,Math=88,English=92}, new Student_1(){ID=2,Name="Mary",Chinese=87,Math=94,English=82}, new Student_1(){ID=3,Name="KangKang",Chinese=89,Math=91,English=96}, new Student_1(){ID=4,Name="Maria",Chinese=88,Math=65,English=94}, new Student_1(){ID=5,Name="Ben",Chinese=70,Math=91,English=82}, }; //未排序时 foreach (var item in stuList) { Console.WriteLine(item.ToString()); } Console.Read(); }
未排序时的输出结果为:
二、sort排序方法
//根据Chinese进行排序 //第一种方法 stuList.Sort((s1, s2) =>s1.Chinese.CompareTo(s2.Chinese));//前一个比后一个不交换,反之则交换,正序 stuList.Sort((s1, s2) => s2.Chinese.CompareTo(s1.Chinese));//前一个比后一个不交换,反之则交换,逆序 //第二种方法 stuList.Sort((s1, s2) => { if (s1.Chinese > s2.Chinese) { return 1; } else { return 0; } }); //含义也为如果s1>s2则交换,反之不交换 正序
关于compareto的用法:
var m=a.compare(b) //a与b进行比较,如果a>b 则m=1; a<b 则m=-1; a=b 则m=0;
三、orderby排序
//orderby第一种排序方法 lambda var s1 = stuList.OrderBy(p => p.Chinese).ToList(); //第二种方法语法 var s1 = from s in stuList orderby s.Chinese ascending select s; //其中ascending为默认升序,deascending为降序
根据多个内容综合排序:
要求先根据数学成绩进行排序,在根据语文进行排序,都是升序 //第一种方法 var s1 = stuList.OrderBy(p => p.Math).ThenBy(p=>p.Chinese).ToList(); //orderby后面可以无限跟Thenby对排序后的数据再进行排序 //第二种方法linq语法 var s1 = from s in stuList orderby s.Math, s.Chinese ascending select s; orderby 后面跟两个属性,第一个s.math,先根据他进行排序,再根据s.chinese进行排序