2017-12-12 11 views
-1

私はこれがobject持っている:ちょうど同じように、このオブジェクトでオブジェクトの中でリストを取得するにはどうすればよいですか? 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 

、住所は、ノートすべてのアドレスのリストであるオブジェクトやアイテムのちょうど別の分野では、子供という項目があり、それが内部のリストが含まれています住所。

私はこのコードでノートの値を取得しています:

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

は、これは、リストに通過したとき、私はこの方法から得るリターンです:System.Collections.Generic.List1[Address]

しかし、私はリストにアクセスすることはできません

Object2 
Adress 
    [0] 
    [1] 

Object3 
Items 
    Item 
    [0] 
    [1] 

そして、私は、上記の任意の提案をする方法を使用して値を得ることができます、私はこのように、Xリストにこのオブジェクトを分離する必要がありますか?私はすでに非常に多くの方法を試してみました...

+4

のようにそれは素晴らしいだろう、List<Object>に住所プロパティの値をキャスト。 – mjwills

+0

私はオブジェクト内のリストから値を取得する必要がある、私はそれを得ることができない、私はちょうどノート(それはリストではない)から値を取得している –

+0

私の 'foreach'は私のノート値、それがアドレスを渡すとき、私は返す:System.Collections.Generic.List1 [住所] –

答えて

1

はちょうどあなたが[MCVE]を作成することができれば、この

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

リストアドレス= item.GetType()。GetProperty( "Address")。リストとしてのGetValue(アイテム); このgetのnull。なぜか何か手がかり? –

+0

これは、Addressプロパティがリストではないため、この 'item.GetType()。GetProperty(" Address ")。GetValue(item).GetType()'のように検査します。おそらくIEnumerable であり、リストではないです。プロパティを調べる必要があります。 –

+0

- \t \t item.GetType GetProperty( "Address")。GetValue(item).GetType()\t {Name = "List'1" FullName = "System.Collections.Generic.List'1 [[Address 、アドレス=バージョン0.0.0.0、文化=ニュートラルPublicKeyToken = null]]}} \t System.Type {System.RuntimeType} それはリストのように見えます –

関連する問題