连接两个DataTable

时间:2013-02-15 11:41:29

标签: c# asp.net datatable

我有两个DataTables

DataTable1:

id  name
--  ----
1   jhon
2   peter

DataTable2:

city     country
---      -------
Sevilla  Spain
Granada  Spain

id是对应的。我需要连接这些数据表的列。

这是理想的结果:

id  name   city     country
--  ----   ----     -------
1   Jhon   Sevilla  Spain
2   Peter  Granada  Spain

有什么想法吗?

谢谢!

5 个答案:

答案 0 :(得分:0)

您需要将主键添加到table2,并在两个表之间添加关系。

答案 1 :(得分:0)

我假设您的DataTable名称是“DataTable1”和“DataTable2”,您可以使用以下代码将它们合并到DataTable1中;

Datatable1.Columns.Add("city", typeof(string));
Datatable1.Columns.Add("country", typeof(string));

for (int i = 0; i < Datatable1.Rows.Count; i++)
{
    Datatable1.Rows[i][2] = DataTable2.Rows[i][0].toString();
    Datatable1.Rows[i][3] = DataTable2.Rows[i][1].toString();
}

答案 2 :(得分:0)

使用下面的代码。

SqlDataSource1.ConnectionString = "--YOUR CONNECTION STRING--";
SqlDataSource1.SelectCommand = "select DataTable1.id,DataTable1.name,DataTable2.city,DataTable2.country from DataTable1,DataTable2
";
SqlDataSource1.DataBind();

祝你好运!

答案 3 :(得分:0)

您可以使用DataTable类的marge方法

答案 4 :(得分:0)

你可以利用linq

  1. 将您的数据表转换为IEnumerable
  2. 然后你可以在上面申请linq。

    var results = from myRow in DataTable1.AsEnumerable()
    var results2 = from myRow in DataTable2.AsEnumerable()
    
    var result3= from row1 in results
                  join row2 in results2
                   select new
                  {
                      row1.id,
                      row1.name,
                      row2.city,
                      row2.country
                 };