C# - LINQ-Orderby - Wie funktioniert true/false beeinflussen orderby?

Ich war das Studium ein bisschen LINQ Bestellung habe ich eine Liste von Ids, und ich brauche, um diese nacheinander. Es gibt jedoch bestimmte ids, müssen Vorrang vor den standard-Bestellung.

Gegeben, diese C# - code (die eingefügt werden können in .NETTO-Fiddle zu testen) die Bestellung funktioniert wie ich es brauche, aber ich verstehe nicht, warum nicht (!) operator auf a enthält, ist, dass Sie mir die richtige Reihenfolge?

Voraussichtlich meine Bestellung Ausgang (5, 1, 2, 3, 4, 6, 7, 8, 9).

Wenn ich eine Contains in meiner Bestellung, sollte es nicht geben, Bestell-Priorität, um die Zeilen, die true zurück? Stattdessen scheint es zu geben, Bestell-Priorität für Zeilen, die false zurück.

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;}
  }
}

Was ist die Erklärung, warum dies geschieht?

InformationsquelleAutor DotNet NF | 2016-08-23
Schreibe einen Kommentar