建个DataTable3,循环DataTable1,查找DataTable2,写数据到DataTable3
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/

解决方案 »

  1.   


    已经做到取到相同数据,但是不存在的数据不知道如何处理!
    public DataTable Merge(DataTable table1, DataTable table2)
            {
                DataTable table = new DataTable();
                DataRow row = table.NewRow();
                row[0] = "编号";
                row[1] = "名称1";
                row[2] = "名称2";
                row[3] = "计算";
                table.Rows.Add(row);
                 
                for (int i = 0; i < table1.Rows.Count; i++)
                {
                    for (int j = 0; j < table2.Rows.Count; j++)
                    {
                        if (table1.Rows[i][0].ToString() == table2.Rows[j][0].ToString())
                        {
                            DataRow newRow = table.NewRow();
                            newRow[0] = table1.Rows[i][0].ToString();
                            newRow[1] = table1.Rows[i][1].ToString();
                            newRow[2] = table2.Rows[j][1].ToString();
                            newRow[3] = Convert.ToInt32(table1.Rows[i][1].ToString()) / Convert.ToInt32(table1.Rows[j][1].ToString());
                            table.Rows.Add(newRow);
                        }
                    }
                }
     
                return table;
            }
      

  2.   

    DataView dv2 =table2.DefaultView;for (int i = 0; i < table1.Rows.Count; i++)
                {
                    dv.RowFilter = "编号="+table1.Rows[i][0].ToString();
                        if (dv.Count>0)
                        {
                            DataRow newRow = table.NewRow();
                            newRow[0] = table1.Rows[i][0].ToString();
                            newRow[1] = table1.Rows[i][1].ToString();
                            newRow[2] = dv[0][1].ToString();
                            newRow[3] = Convert.ToInt32(table1.Rows[i][1].ToString()) / Convert.ToInt32(dv[0][1].ToString());
                            table.Rows.Add(newRow);
                        }
    else //不存在
                        {
                            DataRow newRow = table.NewRow();
                            newRow[0] = table1.Rows[i][0].ToString();
                            newRow[1] = table1.Rows[i][1].ToString();
                            newRow[2] = ...;
                            newRow[3] = ...;
                            table.Rows.Add(newRow);
                        }
                    }
      

  3.   

    8    E       0      E/e小e哪里有对应
      

  4.   


    //我这里写的字段2都是字符串类型,你可以按照你需要的修改这个语句
    //关键是进行左连接查询就可以了
    var result = from DataRow d1 in dt1.Rows
                 join DataRow d2 in dt2.Rows
                 on d1[0] equals d2[0]
                 into dt3
                 from p in dt3.DefaultIfEmpty()
                 select new
                 {
                     No = d1[0],   //编号
                     Name1 = d1[1],//名称1
                     Name2 = p != null ? p[1] : "0"//名称2
                 };
    result.ToList().ForEach(a =>
    {
        Console.WriteLine(a.No + " " + a.Name1 + "  " + a.Name2 + " " + a.Name1 + "/" + a.Name2);
    });
      

  5.   


    大神啊!!计算效率立马提高了几个级别!再请教一个问题,如果NAME1是数值,我要对NAME1进行相加,并在输出的最后显示合计的数值,如何写!
      

  6.   


    //你上面2楼那个普通的合并方法可以修改成这样就可以了
    public DataTable Merge(DataTable table1, DataTable table2)
    {
        DataTable table = new DataTable();
        //init new table
        for (int i = 0; i < table1.Rows.Count; i++)
        {
            int j;
            for (j = 0; j < table2.Rows.Count; j++)
            {
                if (table1.Rows[i][0].ToString() == table2.Rows[j][0].ToString())
                {
                    //add new row 表1表2相同编号的行
                    break;
                }
            }
            if (j >= table2.Rows.Count)
            {
                //add new row 表1有表2没有的行
            }
        }
        return table;
    }
      

  7.   


    //你上面2楼那个普通的合并方法可以修改成这样就可以了
    public DataTable Merge(DataTable table1, DataTable table2)
    {
        DataTable table = new DataTable();
        //init new table
        for (int i = 0; i < table1.Rows.Count; i++)
        {
            int j;
            for (j = 0; j < table2.Rows.Count; j++)
            {
                if (table1.Rows[i][0].ToString() == table2.Rows[j][0].ToString())
                {
                    //add new row 表1表2相同编号的行
                    break;
                }
            }
            if (j >= table2.Rows.Count)
            {
                //add new row 表1有表2没有的行
            }
        }
        return table;
    }
      

  8.   

    无语csdn,怎么连发两次Console.WriteLine("合计:" + result.Sum(a => Convert.ToInt32(a.Name1)));
      

  9.   

    我想单独在list最后面再加一行合计!应该如何写!!
      

  10.   

    就是在list集合后再加一行合计!!返回一个大的list集合!