如何将两个相同的列数据表单元合并到一个用C#逗号分隔的单元格中?

时间:2019-10-06 19:15:15

标签: c# .net

我必须拖曳具有相同列的数据表,例如:-

输入数据表1

Column1   Column2     Column3
--------------------------
Aa         Bb          Cc
Dd         Ee          Ff

输入数据表2:

Column1  Column2      Column3
-----------------------------
  Gg         Hh        Ii
  Jj         Kk        Ll

我需要这样的输出:

Column1          Column2           Column3
------------------------------------------
Aa,Gg             Bb,Hh             Cc,Ii
Dd,Jj             Ee,Kk             Ff,Li

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

DataTable dataTable1 = new DataTable();
        DataTable dataTable2 = new DataTable();
        dataTable1.Columns.Add("Column1", typeof(string));
        dataTable1.Columns.Add("Column2", typeof(string));
        dataTable1.Columns.Add("Column3", typeof(string));
        dataTable2.Columns.Add("Column1", typeof(string));
        dataTable2.Columns.Add("Column2", typeof(string));
        dataTable2.Columns.Add("Column3", typeof(string));
        dataTable1.Rows.Add("Aa", "Bb", "Cc");
        dataTable1.Rows.Add("Dd", "Ee", "Ff");
        dataTable2.Rows.Add("Gg", "Hh", "Ii");
        dataTable2.Rows.Add("Jj", "Kk", "Ll");

        Console.WriteLine("Column1  Column2 Column3");
        for (int i = 0; i < dataTable1.Rows.Count; i++)
        {
            Console.Write("\n"+dataTable1.Rows[i]["Column1"].ToString()+","+ dataTable2.Rows[i]["Column1"].ToString());
            Console.Write("\t" + dataTable1.Rows[i]["Column2"].ToString() + "," + dataTable2.Rows[i]["Column2"].ToString());
            Console.Write("\t" + dataTable1.Rows[i]["Column3"].ToString() + "," + dataTable2.Rows[i]["Column3"].ToString());
        }
        Console.ReadKey();

答案 1 :(得分:0)

请尝试使用以下代码段,这可能对您有所帮助。

DataTable dt1 = new DataTable();
DataTable dt2 = new DataTable();
DataTable dt3 = new DataTable();

dt1.Columns.AddRange(new DataColumn[] { new DataColumn(), new DataColumn(), new DataColumn() });
dt2.Columns.AddRange(new DataColumn[] { new DataColumn(), new DataColumn(), new DataColumn() });
dt3.Columns.AddRange(new DataColumn[] { new DataColumn(), new DataColumn(), new DataColumn() });

Random rnd = new Random();
int count = rnd.Next(3, 10);

for(int i =0; i < count; i++)
{
    dt1.Rows.Add("T1C1R" + i, "T1C2R" + i, "T1C3R" + i);                
}

count = rnd.Next(3, 10);

for(int i = 0; i < count; i++)
{
    dt2.Rows.Add("T2C1R" + i, "T2C2R" + i, "T2C3R" + i);
}

DataTable tmpDt1 = dt1.Rows.Count >= dt2.Rows.Count ? dt1 : dt2;
DataTable tmpDt2 = tmpDt1 == dt1 ? dt2 : dt1;

for(int i = 0; i < tmpDt1.Rows.Count; i++)
{
    DataRow dr = dt3.NewRow();
    dr.ItemArray = tmpDt1.Rows[i].ItemArray;

    if (i < tmpDt2.Rows.Count)
    {
        dr[0] = dr[0] + ", " + tmpDt2.Rows[i][0];
        dr[1] = dr[1] + ", " + tmpDt2.Rows[i][1];
        dr[2] = dr[2] + ", " + tmpDt2.Rows[i][2];                    
    }
    dt3.Rows.Add(dr);
}

dataGridView1.DataSource = dt1;
dataGridView2.DataSource = dt2;
dataGridView3.DataSource = dt3;