2012-10-08 32 views
0

我試圖做一個簡單的DataRow合併,但不知何故我沒有得到正確的數據返回。如何模擬DataRow合併並構建2D DataRow數組?

我想建立一個二維的DataRow數組

這與數據表和dataRelations和填充數據行簡單的數據集定義。

 DataSet ds = new DataSet(); 
 ds.Tables.AddRange(new DataTable[] { 
      new DataTable("Person"), 
      new DataTable("Car"), 
      new DataTable("Color"), 
      new DataTable("RGB"), 
      new DataTable("Bicycle") 
     }); 
     ds.Tables["Person"].Columns.AddRange(new DataColumn[] { 
      new DataColumn("id", typeof(int)), 
      new DataColumn("FName", typeof(string)) 
     }); 
     ds.Tables["Car"].Columns.AddRange(new DataColumn[] { 
      new DataColumn("id", typeof(int)), 
      new DataColumn("PersonId", typeof(int)), 
      new DataColumn("CType", typeof(string)) 
     }); 
     ds.Tables["Color"].Columns.AddRange(new DataColumn[] { 
      new DataColumn("id", typeof(int)), 
      new DataColumn("CarId", typeof(int)), 
      new DataColumn("ColorName", typeof(string)) 
     }); 
     ds.Tables["RGB"].Columns.AddRange(new DataColumn[] { 
      new DataColumn("id", typeof(int)), 
      new DataColumn("ColorId", typeof(int)), 
      new DataColumn("HEX", typeof(string)) 
     }); 
     ds.Tables["Bicycle"].Columns.AddRange(new DataColumn[] { 
      new DataColumn("id", typeof(int)), 
      new DataColumn("PersonId", typeof(int)), 
      new DataColumn("Age", typeof(string)) 
     }); 
     ds.Tables["Person"].ChildRelations.Add(new DataRelation("PersonCar", ds.Tables["Person"].Columns["id"], ds.Tables["Car"].Columns["PersonId"])); 
     ds.Tables["Car"].ChildRelations.Add(new DataRelation("CarColor", ds.Tables["Car"].Columns["id"], ds.Tables["Color"].Columns["CarId"])); 
     ds.Tables["Color"].ChildRelations.Add(new DataRelation("ColorRGB", ds.Tables["Color"].Columns["id"], ds.Tables["RGB"].Columns["ColorId"])); 
     ds.Tables["Person"].ChildRelations.Add(new DataRelation("PersonBicycle", ds.Tables["Person"].Columns["id"], ds.Tables["Bicycle"].Columns["PersonId"])); 

     ds.Tables["Person"].Rows.Add(0, "John"); 
     ds.Tables["Person"].Rows.Add(1, "Jenny"); 
     ds.Tables["Person"].Rows.Add(2, "Adam"); 

     ds.Tables["Car"].Rows.Add(0, 0, "Renault"); 
     ds.Tables["Car"].Rows.Add(1, 0, "Jeep"); 
     ds.Tables["Car"].Rows.Add(2, 1, "Subaru"); 
     ds.Tables["Car"].Rows.Add(3, 2, "Daewoo"); 

     ds.Tables["Color"].Rows.Add(0, 0, "Red"); 
     ds.Tables["Color"].Rows.Add(1, 1, "Black1"); 
     ds.Tables["Color"].Rows.Add(2, 1, "Black2"); 
     ds.Tables["Color"].Rows.Add(3, 1, "Black3"); 
     ds.Tables["Color"].Rows.Add(4, 2, "Green"); 
     ds.Tables["Color"].Rows.Add(5, 3, "Blue"); 

     ds.Tables["RGB"].Rows.Add(0, 1, "GREEN RGB1"); 
     ds.Tables["RGB"].Rows.Add(1, 1, "GREEN RGB2"); 

     ds.Tables["Bicycle"].Rows.Add(2, 0, "Mount."); 

我希望得到一個二維的DataRow數組,結果如下:

 John, Renault, Red 
     John, Jeep, Black1, GREEN RGB1 
     John, Jeep, Black1, GREEN RGB2 
     John, Jeep, Black2 
     John, Jeep, Black3   
     John, Mount. 
     Jenny, Subaru, Green 
     .... 

我不想用DataTable.Merge!那麼如何編寫一個填充二維數組的遞歸函數。

的DataRows

結果列表的列表?

這是非常迫切的,所以每個幫助國王都受到歡迎。 在此先感謝。

回答

0

也許在遍歷數據集?但我無法幫助你。問候。