Wie bekomme ich eine flachere Liste von der geschachtelten Klasse ListT?

7

Ich habe eine Frage mit denselben Beispielen - diese Frage konzentriert sich auf ein anderes Thema. Gegeben die folgenden Klassen:

%Vor%

Wenn für Family eine Methode definiert ist:

%Vor%

Ich muss in der Lage sein, das Prädikat über eine abgeflachte Liste von Person auszuführen. Im obigen Beispiel verflacht SelectMany die Liste nicht wie gewünscht. Das obige wird nicht kompiliert, da der abgeleitete Typ nicht bestimmt werden kann.

Wie kann ich die Family.Person-Sammlung dazu bringen, eine abgeflachte Personenliste zu werden?

    
IAbstract 12.01.2012, 16:19
quelle

5 Antworten

5
%Vor%     
Petr Behenský 12.01.2012, 17:21
quelle
6

Nach meinem Wissen ist der einfachste Weg, dies zu erreichen, ein Helfer.

%Vor%

Sie können dann Ihr Prädikat für diese Liste ausführen:

%Vor%     
armen.shimoon 12.01.2012 16:33
quelle
4

SelectMany flacht nur eine Hierarchieebene ab:

%Vor%

Sie möchten vielleicht eine willkürliche Tiefenwanderung der Hierarchie. Dies geschieht am besten durch Rekursion (ungetestet).

%Vor%     
Amy B 12.01.2012 16:35
quelle
3

Sie brauchen nicht beide SelectMany und yield return - Sie brauchen das eine oder das andere:

%Vor%

ODER

%Vor%     
dasblinkenlight 12.01.2012 16:23
quelle
2

family.Person ist bereits eine abgeflachte Liste; Sie müssen SelectMany nicht aufrufen.

%Vor%

Auch können Sie einfacher tun:

%Vor%     
Adam Rackis 12.01.2012 16:22
quelle

Tags und Links