6 Stimmen

LINQ - Auswahl aller Kinder aus einer Objekthierarchie

Ich habe eine List von Objekten, die ein String-Array als eine ihrer Eigenschaften enthalten. Ich möchte ein bestimmtes String-Array erhalten, das alle Werte enthält.

Mein Objekt sieht folgendermaßen aus:

public class Zoo {
    string Name { get; set;}
    string[] Animals { get; set;}
}

Manche Zoos haben nur ein Tier, andere haben viele. Was wäre der einfachste Lambda-Ausdruck oder die einfachste LINQ-Abfrage, um mir eine eindeutige Liste aller Tiere in allen Zoos in List<Zoo> ?

18voto

Jon Skeet Punkte 1325502
var query = zoos.SelectMany(zoo => zoo.Animals)
                .Distinct();

Oder wenn Sie ein Fan von Abfrageausdrücken sind (bei so etwas Einfachem wäre ich das nicht):

var query = (from zoo in zoos
             from animal in zoo.Animals
             select animal).Distinct();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X