使用Linq按许多条件排序列表

Dil*_*hod 2 c# linq sorting

我有下面的代码填写列表.

List<Person> people = new List<Person>();
for (int i = 1; i <= 30; i++)
{
    var p = new Person();
    if (i <= 10) p.Group = "A";
    else if (i <= 20) p.Group = "B";
    else p.Group = "C";
    p.Name = "Person " + i;
    if (i % 3 == 0)
        p.Age = 10;
    else
        p.Age = 20;
    people.Add(p);
}
Run Code Online (Sandbox Code Playgroud)

现在我想按照以下顺序进行排序:所有人必须是第一个拥有"B"组并且必须按年龄排序的人.然后其余的人必须按年龄排序,集团不必有序.这是一个例子:

Name   Group   Age
Person   B     10
Person   B     10
.....
Person   B     20
Person   B     20
Person   B     20
.....
//From here Group doesn't have to be in order.
Person   A     10
Person   A     10
.....
Person   C     10
Person   C     10
.....
Person   A     20
Person   A     20
Person   A     20
.....
Person   C     20
Person   C     20
Person   C     20
....
Run Code Online (Sandbox Code Playgroud)

我可以使用一个linq查询执行此操作吗?

谢谢您的帮助!

cuo*_*gle 12

您可以使用OrderBy命令B第一,在这里招false总是前true.然后你订购Age:

 var result = list.OrderBy(p => p.Group != "B")
                  .ThenBy(p => p.Age);
Run Code Online (Sandbox Code Playgroud)