C # LINQ Orderby - Как true / false влияет на orderby?

Я изучал порядок упорядочения LINQ, поскольку у меня есть список идентификаторов, и мне нужно упорядочивать их последовательно. Однако существуют определенные идентификаторы, которые должны иметь приоритет над стандартным порядком.

Учитывая этот код C # (который может быть вставлен в.NET Fiddle чтобы проверить) порядок работает так, как мне нужно, но я не понимаю, почему нет (!) оператор на содержит дает мне правильный порядок?

Мой ожидаемый результат заказа (5, 1, 2, 3, 4, 6, 7, 8, 9).

Если у меня естьContains в моем порядке, не должен ли он дать приоритет порядка строк, которые вернули истину? Вместо этого он дает приоритет упорядочивания строкам, которые возвращают false.

using System.Linq;
using System;

public class Program
{
  public static void Main()
  {
    var numbersToFilterBy = new [] {5, 11, 20};

    var x = new [] {new XClass(){Id = 1}, new XClass(){Id = 9}, new XClass(){Id = 5}, new XClass(){Id = 3}, new XClass(){Id = 4}, new XClass(){Id = 2}, new XClass(){Id = 6}, new XClass(){Id = 8}, new XClass(){Id = 7}};

    var trueData = (from data in x
                   orderby !numbersToFilterBy.Contains(data.Id), data.Id
                    select data).ToList();

    foreach(var item in trueData){
        Console.WriteLine(item.Id);
  }
}

public class XClass{
    public int Id{get;set;}
  }
}

Как объяснить, почему это происходит?

Ответы на вопрос(4)

Ваш ответ на вопрос