先来看看对单个字段排序 public class Demos { private string a; public string A { get { return a; } set { a = value; } } private int b; public int B { get { return b; } set { b = value; } } public Demos(int _a,string _b) { this.b = _a; this.a = _b; } } List<Demos> list = new List<Demos>(); list.Add(new Demos(1, "1.jpg")); list.Add(new Demos(4, "10.jpg")); list.Add(new Demos(2, "2.jpg")); list.Add(new Demos(4, "3.jpg")); var rest =(from a in list orderby a.A select a); foreach (var k in rest) { Console.WriteLine(k.B + "=>" + k.A); } 多个字段就是在原来的基础上进行再次排序 List<Demos> list = new List<Demos>(); list.Add(new Demos(1, "1.jpg")); list.Add(new Demos(4, "10.jpg")); list.Add(new Demos(2, "2.jpg")); list.Add(new Demos(4, "3.jpg")); var rest =(from a in (from a in list orderby a.A select a) orderby a.B descending select a); foreach (var k in rest) { Console.WriteLine(k.B + "=>" + k.A); } 或者另外一种方法 遍历出结果 foreach (var k in list.OrderByDescending(c=>c.B).ThenBy(c=>c.B)) { Console.WriteLine(k.B + "=>" + k.A); }