2012-10-08 28 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

也许在遍历数据集?但我无法帮助你。问候。