2017-11-23 17 views
1

私は以下のように見えるリストクラスにその翻訳てる1,2または4ネストされたDataTable

ことができるのDataTableを含むデータセットを取得しています。例えば

public class test 
    { 
      public int id { get; set; } 
      public int name { get; set; } 
      public List<test> LstTest {get;set;} 
    } 

iはデータセットに3つのDataTableを取得する場合、私は、データテーブル2から移入する必要があり、再び各オブジェクト別のリスト(LstTest)を含む、第一データテーブルからテストクラスのリストを作成すると仮定よこのリストの中には、データテーブル3からデータを取り込む必要のあるLstTestが含まれています。

これに対して私に解決策を教えてください。私はこれを静的に行うことができますが、問題は、データテーブルの数がどれくらいになるかなど、動的である必要があるということです。 2,3,4など

本当にありがとうございます。

public static List<test> GetTestLists(DataSet ds) 
{ 
    var allLists = new Dictionary<int, List<test>>(); 

    // reverse loop necessary for efficient algorithm 
    for (int i = ds.Tables.Count -1; i >= 0; i--) 
    { 
     List<test> childList; 
     bool hasChildren = allLists.TryGetValue(i + 1, out childList); 
     var testList = new List<test>(); 
     DataTable tbl = ds.Tables[i]; 

     foreach (DataRow row in tbl.Rows) 
     { 
      var t = new test 
      { 
       id = row.Field<int>("Id"), 
       name = row.Field<int>("name") // int for name ?? 
      }; 
      if (hasChildren) 
       t.LstTest = childList; 
      testList.Add(t); 
     } 
     allLists.Add(i, testList); 
    } 

    return allLists.TryGetValue(0, out List<test> parentList) ? parentList : null; 
} 

を私はint namestring nameする必要があります推測:私が正しくあなたの条件を理解している場合

答えて

関連する問題