Frage

Ich habe eine Liste von Foo.

Foo hat eine String-Eigenschaft namens Bar.

Ich möchte verwenden LINQ um einen String[] von zu bekommen unterscheidbar Werte für Foo.Bar in der Liste von Foo.

Wie kann ich das machen?

War es hilfreich?

Lösung

Ich würde Lambdas nehmen...Viel schöner

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

funktioniert genauso wie das, was @lassevk gepostet hat.

Ich möchte auch hinzufügen, dass Sie möglicherweise bis zur letzten Minute mit der Konvertierung in ein Array warten möchten.

LINQ führt im Hintergrund einige Optimierungen durch. Abfragen bleiben in ihrer Abfrageform, bis sie explizit benötigt werden.Vielleicht möchten Sie also zuerst alles, was Sie brauchen, in die Abfrage einbauen, damit alle möglichen Optimierungen insgesamt angewendet werden.

Mit Auswertung meine ich, nach etwas zu fragen, das explizit eine Auswertung erfordert, wie „Count()“ oder „ToArray()“ usw.

Andere Tipps

Dies sollte funktionieren, wenn Sie das fließende Muster verwenden möchten:

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

Versuche dies:

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

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

var strings = (from a in fooList select a.Bar).Distinct();
string[] array = strings.ToArray();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top