using System; using System.Collections.Generic; using System.Linq; namespace TestOrderByThenBy { class Program { static void Main(string[] args) { var list = Foo.GenerateList(10); foreach (var item in list) Console.WriteLine(item); /* INITIAL A:3 B:1 C:3 D:1 A:4 B:1 C:4 D:1 A:4 B:2 C:4 D:2 A:4 B:2 C:0 D:2 A:0 B:3 C:0 D:3 A:0 B:3 C:1 D:3 A:1 B:3 C:1 D:4 A:1 B:4 C:1 D:4 A:2 B:4 C:2 D:0 A:2 B:0 C:2 D:0 */ Console.WriteLine("--------------OrderBy(q => q.A).OrderBy(q => q.B).OrderBy(q => q.C).OrderBy(q => q.D)-----------------"); foreach (var item in list.OrderBy(q=>q.A).OrderBy(q=>q.B).OrderBy(q=>q.C).OrderBy(q=>q.D)) Console.WriteLine(item); /* ORDER BY A:3 B:0 C:3 D:0 A:3 B:1 C:3 D:1 A:4 B:1 C:4 D:1 A:4 B:2 C:0 D:2 A:4 B:2 C:4 D:2 A:0 B:2 C:0 D:3 A:0 B:3 C:1 D:3 A:1 B:3 C:1 D:4 A:1 B:4 C:1 D:4 A:2 B:4 C:2 D:4 */ Console.WriteLine("-----------------.OrderBy(q => q.A).ThenBy(q => q.B).ThenBy(q => q.C).ThenBy(q => q.D)-----------------"); foreach (var item in list.OrderBy(q => q.A).ThenBy(q => q.B).ThenBy(q => q.C).ThenBy(q => q.D)) Console.WriteLine(item); /* A:0 B:2 C:0 D:3 A:0 B:3 C:0 D:3 A:1 B:3 C:1 D:4 A:1 B:4 C:1 D:4 A:2 B:0 C:2 D:0 A:3 B:0 C:3 D:0 A:3 B:1 C:3 D:1 A:3 B:1 C:4 D:1 A:4 B:2 C:0 D:2 A:4 B:2 C:4 D:2 */ } public class Foo { public int A { get; set; } public int B { get; set; } public int C { get; set; } public int D { get; set; } static int seed = 0; public override string ToString() { return $"A:{A} \t B:{B} \t C:{C} \t D:{D} \t"; } public static IEnumerableGenerateList(int count) { for (int i = 0; i < count; i++) { yield return new Foo() { A = new Random(seed++).Next(5), B = new Random(seed++).Next(5), C = new Random(seed++).Next(5), D = new Random(seed++).Next(5) }; } } } } }