2008-11-23 4 views
2

У меня есть две таблицы в DataSet в .NET. Я хочу присоединиться к ним в столбце ID. Затем я хочу, чтобы DataGridView отображал два столбца из первой таблицы и один столбец из второй таблицы.Присоединиться к таблицам в .NET DataSet для отображения в DataGridView

Если это упростит, соотношение между двумя таблицами является взаимно однозначным.

Можно ли это сделать?

ответ

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(); 

Вы можете привязать к «Name» и «Value» данных. Обратите внимание, что с типизированными наборами данных проще, поскольку вы можете потерять мусор Cast<> и Field<>.

0

Почему бы не использовать конструктор? Вы размещаете обе таблицы в наборе данных, вы устанавливаете отношения, и изменить заливку/Получить методы, к чему-то вроде этого (с «внутренним соединением»):

ВЫБОР Productos.idProducto, Productos.Nombre , Precios.Precio, Tiendas.idTienda, Zonas.Zona, Productos.idZona ОТ
Productos INNER JOIN коштовного ПО Productos.idProducto = Precios.idProducto