2017-12-12 5 views
-1

Ich habe diese object:Wie bekomme ich die Listen in einem Objekt? C#

Object 
Adress - count = 2 - System.Collections.Generic.List<Address> 
    [0] Address 
    City - "Text" - string 
    State - "Text" - string 
    [1] Address 
    City - "Text" - string 
    State - "Text" -string 
Notes - "Text" - string 
Items - Type(Item) 
    Item - count = 2 - System.Collections.Generic.List<Item> 
    [0] Item 
    Name - "Text" - string 
    Price - "Text" - string 
    [1] Item 
    Name - "Text" - string 
    Price - "Text" - string 

In diesem Objekt Adresse eine Liste aller Adressen ist, stellt fest, ist nur ein weiteres Feld des Objekts und Artikel hat ein Kind namens Element und enthält Listen nach innen, wie Adresse.

Ich erhalte den Wert der Noten durch diesen Code:

foreach (var item in (object as IEnumerable).Cast<object>().ToList()) 
        { 
    String substring = item.GetType().GetProperty("Notes").GetValue(item).ToString(); 
} 

Dies ist die Rückkehr ich aus dem Verfahren erhalten, wenn es zur Liste geht: System.Collections.Generic.List1[Address]

Aber ich kann nicht die Listen zugreifen , ich brauche dieses Objekt in X-Listen zu trennen, wie folgt aus:

Object2 
Adress 
    [0] 
    [1] 

Object3 
Items 
    Item 
    [0] 
    [1] 

Und dann kann ich die Werte mit Hilfe der oben beschriebenen Methode, irgendwelche Vorschläge erhalten? Ich habe bereits so viele Möglichkeiten ausprobiert ...

+4

Es wäre fantastisch, wenn Sie ein [MCVE] schaffen könnte. – mjwills

+0

Ich brauche die Werte aus den Listen innerhalb des Objekts, ich kann das nicht bekommen, ich bekomme nur die Werte aus Notizen (das ist keine Liste) –

+0

Meine 'foreach' kehren nur zu mir die Notenwerte zurück , wenn es die Adresse passiert, gebe ich zurück: System.Collections.Generic.List1 [Adresse] –

Antwort

1

werfen Sie einfach den Wert von Adress-Eigenschaft auf List<Object>, wie diese

foreach (var item in (object as IEnumerable).Cast<object>().ToList()) 
{ 
    List<Object> address = item.GetType().GetProperty("Adress").GetValue(item) as List<Object>; 
    foreach(var ad in address) 
    { 
     //do what you want here 
    } 
} 
+0

Liste Adresse = item.GetType(). GetProperty ("Adresse"). GetValue (Element) als Liste ; das ist null. irgendeinen Hinweis warum? –

+0

Das ist, weil Address-Eigenschaft keine Liste ist, inspizieren Sie es, wie diese 'item.GetType(). GetProperty ("Adresse"). GetValue (Element) .GetType() '. Vielleicht ist ein IEnumerable und keine Liste . Sie müssen die Immobilie besichtigen. –

+0

- \t \t item.GetType(). GetProperty ("Adresse"). GetValue (Element) .GetType() \t {Name = "List'1" FullName = "System.Collections.Generic.List'1 [[Adresse , Adresse, Version = 0.0.0.0, Culture = Neutral, PublicKeyToken = null]] "} \t System.Type {System.RuntimeType} Es scheint eine Liste zu sein –

Verwandte Themen