我在 .NET 的数据集中有两个表。我想加入他们的 ID 列。然后我希望 DataGridView 显示第一个表中的两列和第二个表中的一列。
如果它更容易,两个表之间的关系是一对一的。
可以做到吗?
我在 .NET 的数据集中有两个表。我想加入他们的 ID 列。然后我希望 DataGridView 显示第一个表中的两列和第二个表中的一列。
如果它更容易,两个表之间的关系是一对一的。
可以做到吗?
那么,它是只读的吗?在 .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<>
垃圾。
为什么不使用设计师?您将两个表都放在数据集中,建立关系,然后将 Fill/Get 方法更改为如下所示(使用“内部连接”):
选择 Productos.idProducto、Productos.Nombre、Precios.Precio、Tiendas.idTienda、Zonas.Zona、Productos.idZona 从
Productos 内部加入 Precios ON Productos.idProducto = Precios.idProducto