2008-09-02 8 views

Antwort

4

ich lambdas gehen würde ... wayyy schöner

var bars = Foos.Select(f => f.Bar).Distinct().ToArray(); 

funktioniert genauso wie was @lassevk gepostet hat.

Ich würde auch hinzufügen, dass Sie möglicherweise von der Umwandlung in ein Array bis zur letzten Minute bleiben möchten.

LINQ führt einige Optimierungen im Hintergrund durch, Abfragen bleiben in ihrer Abfrageform, bis sie explizit benötigt werden. Daher sollten Sie zuerst alles, was Sie benötigen, in die Abfrage einbauen, damit jede mögliche Optimierung vollständig angewendet wird.

Durch Auswertung I bedeutet für etwas zu fragen, die explizit evalution erfordert wie „Count()“ oder „ToArray()“ usw.

2

Try this:

var distinctFooBars = (from foo in foos 
         select foo.Bar).Distinct().ToArray(); 
+0

kann ich eine andere Eigenschaft in der gleichen? –

+0

Bitte erläutern Sie, was Sie damit meinen. –

+0

Ich habe eine Liste von Foo. Foo hat eine String-Eigenschaft namens Bar and Coke –

3

Dies sollte funktionieren, wenn Sie die fließend Muster verwenden möchten:

string[] arrayStrings = fooList.Select(a => a.Bar).Distinct().ToArray(); 
0

Sollten Sie nicht in der Lage sein, so etwas zu tun?

var strings = (aus einer InFoList wählen Sie a.Bar) .Distinct(); string [] array = strings.ToArray();