2008-11-23 56 views

回答

4

那么,它是只读吗?在.NET 3.5/C#3.0,你也许可以使用LINQ加入,一个匿名的输出类型很容易:

 DataTable left = new DataTable 
     { 
      Columns = { {"PK", typeof(int)}, {"Name", typeof(string)}}, 
      Rows = {{1,"abc"},{2,"def"}} 
     }, right = new DataTable 
     { 
      Columns = { { "FK", typeof(int) }, { "Value", typeof(decimal) } }, 
      Rows = { { 1, 123.45M }, { 2, 678.9M } } 
     }; 
     var qry = from x in left.Rows.Cast<DataRow>() 
        join y in right.Rows.Cast<DataRow>() 
        on x.Field<int>("PK") equals y.Field<int>("FK") 
        select new 
        { 
         Name = x.Field<string>("Name"), 
         Value = y.Field<decimal>("Value") 
        }; 
     var data = qry.ToList(); 

然后,您可以绑定到“姓名”和数据的“价值”。请注意,键入的数据集更容易,因为您可能会丢失Cast<>Field<>垃圾。

0

为什么不使用设计师? 你把两个表中的数据集,建立关系,并改变填充/ Get方法,对这样的事情(与“内部加盟”):

SELECT Productos.idProducto, Productos.Nombre ,Precios.Precio, Tiendas.idTienda, Zonas.Zona,Productos.idZona FROM
PRODUCTOS INNER JOIN Precios ON Productos.idProducto = Precios.idProducto