2017-02-08 8 views
0

現在、3つのネストされたforloopsを使用して値を取得しています。私は既にJSONをsomeCollectionクラスに非直列化しています。私は同様の例をオンラインで見ましたが、私は誰かがそれを動作させる方法を説明することができればと思っていました。 は再帰的な方法であなたのコードの同等あなたJSONクラスのすべての子ノードの値を取得する方法C#

private List<Guid> GetIds(SomeCollection someList) 
    { 
     var list = new List<Guid>(); 

     for (int i = 0; i < someList.Categories.Count; i++) 
     { 
      for (int j = 0; j < someList.Categories[i].Categories.Count; j++) 
      { 
       for (int k = 0; k < someList.Categories[i].Categories[j].Categories.Count; k++) 
       { 
        list.Add(Guid.Parse((someList.Categories[i].Categories[j].Categories[k].Key))); 
       } 
       list.Add(Guid.Parse((someList.Categories[i].Categories[j].Key))); 
      } 
      list.Add(Guid.Parse((someList.Categories[i].Key))); 
     } 
     return list; 
+0

これは、あなたが再帰呼び出しを使用する必要があり、典型的なケースです。 – Graffito

+0

ありがとう@Graffito。問題は、動的にサブカテゴリを呼び出す方法で再帰を実装する方法です。つまり、このコードは3つのレベルにのみ下がります。私は利用可能なサブカテゴリがあるかどうかをチェックする条件を実装する方法がわかりません – Giolla

答えて

0

ありがとうござい次のようになります。

var list = new List<Guid>(); 
GetIds(someList,list) ; 

private void GetIds(SomeCollection someList,List<Guid> list) 
{ 
    for (int i = 0; i < someList.Categories.Count; i++) 
    { 
    GetIds (someList.Categories[i],list) ; 
    list.Add(Guid.Parse((someList.Categories[i].Key))) ; 
    } 
} 
+0

@Graffitoありがとうございました。それはいくつかのマイナーな変更で動作し、私は理解し、学ぶことができました。 – Giolla

関連する問題