代码之家  ›  专栏  ›  技术社区  ›  Rabin

C中的数据表#

  •  2
  • Rabin  · 技术社区  · 15 年前

    假设我有两个数据表DT1和DT2,其中只有一行。

    DT2有两列:ColA、ColB。

    有没有可能水平地连接这两个数据表以便得到Col1、Col2、Col3、ColA和ColB?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Kashif    15 年前

    我想您必须在第三个表或现有表中添加新列并复制数据

        DataTable dt1 = new DataTable();
    
        dt1.Columns.Add("col1", typeof(string));
        dt1.Columns.Add("col2", typeof(string));
        dt1.Columns.Add("col3", typeof(string));
    
        DataTable dt2 = new DataTable();
    
        dt2.Columns.Add("cola", typeof(string));
        dt2.Columns.Add("colb", typeof(string));
    
        object[] row = {'1', '2', '3'};
        dt1.Rows.Add(row);
    
        object[] row1 = { 'a', 'b' };
        dt2.Rows.Add(row1);
    
        // Create columns in dt1
        dt1.Columns.Add("cola", typeof(string));
        dt1.Columns.Add("colb", typeof(string));
    
        // Copy data from dt2
        dt1.Rows[0]["cola"] = dt2.Rows[0]["cola"];
        dt1.Rows[0]["colb"] = dt2.Rows[0]["colb"];
    
        2
  •  0
  •   Coding Flow    15 年前

    var results = from rs1 in table1.Rows.Cast<DataRow>()
                  join rs2 in table2.Rows.Cast<DataRow>() on rs1.Field<int>("col1") equals rs2.Field<int>("colA")                          
                  select new { col1 = rs1.Field<int>("col1"), col2 = rs1.Field<string>("col3"), col3 = rs1.Field<string>("col3"), colA = rs1.Field<int>("colA"), colB = rs1.Field<string>("colB") };
    

    你不会得到一个 DataTable 但是一个 IEnumerable<T> select语句中定义的匿名类型对象的集合。很明显,我刚刚猜测了连接条件和列的数据类型,因此您必须根据实际数据来指定这些条件和类型。