将.NET DataSet中的表连接到DataGridView中显示

时间:2008-11-23 01:58:31

标签: .net datagridview join dataset

我在.NET的DataSet中有两个表。我想在ID列上加入他们。然后我希望DataGridView显示第一个表中的两列和第二个表中的一列。

如果它更容易,两个表之间的关系是一对一的。

可以吗?

2 个答案:

答案 0 :(得分: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<>垃圾。

答案 1 :(得分:0)

为什么不使用设计师? 您将两个表放在数据集中,建立关系,并将Fill / Get方法更改为类似的内容(使用“内部联接”):

  

SELECT Productos.idProducto,   Productos.Nombre,Precios.Precio,   Tiendas.idTienda,   Zonas.Zona,Productos.idZona来自   产品内部加入                            Precios ON Productos.idProducto =   Precios.idProducto