Wie kann ich mit LINQ SELECT UNIQUE auswählen?

Ich habe eine list wie folgt:

Red Red Brown Yellow Green Green Brown Red Orange 

Ich versuche mit LINQ eine SELECT UNIQUE zu machen, dh ich möchte

 Red Brown Yellow Green Orange var uniqueColors = from dbo in database.MainTable where dbo.Property == true select dbo.Color.Name; 

Ich habe das dann geändert in

 var uniqueColors = from dbo in database.MainTable where dbo.Property == true select dbo.Color.Name.Distinct(); 

ohne Erfolg. Die erste select erhält ALLE colors. Wie kann ich sie ändern, um nur die eindeutigen Werte zu erhalten?

Wenn es eine bessere Möglichkeit gibt, diese Abfrage zu strukturieren, ist es mehr als glücklich, diese Route zu gehen.

Wie gehe ich vor, es zu redigieren, also kann ich .OrderBy ("Spaltenname") dh alphabetisch durch Farbnamen, also Namenseigenschaft haben?

Ich bekomme immer eine Nachricht:

Die Typargumente können nicht aus der Verwendung abgeleitet werden. Versuchen Sie, die Typargumente explizit anzugeben.

Solutions Collecting From Web of "Wie kann ich mit LINQ SELECT UNIQUE auswählen?"

Das Distinct () wird die Reihenfolge durcheinander bringen, so dass Sie danach sortieren müssen.

 var uniqueColors = (from dbo in database.MainTable where dbo.Property == true select dbo.Color.Name).Distinct().OrderBy(name=>name); 
 var uniqueColors = (from dbo in database.MainTable where dbo.Property == true select dbo.Color.Name).Distinct(); 

Mithilfe der Query-Verständnis-Syntax können Sie die Reihenfolge wie folgt erreichen:

 var uniqueColors = (from dbo in database.MainTable where dbo.Property orderby dbo.Color.Name ascending select dbo.Color.Name).Distinct();