想实现两个datatable(有相同字段)的比较,如果datatable1中的姓名等于datatable2中的姓名,则将结果存放在datatable3中

解决方案 »

  1.   

    declare @name varchar(50)declare cur cursor read_only
    FOR SELECT table1.name FROM table1 LEFT JOIN table2 ON table1.name = table2.nameOPEN cur
    fetch next from cur into @name
    while(@@fetch_status=0)
    begin
      
      INSERT INTO table3(name) VALUES(@name)  fetch next from cur into @name
    end
    close cur
    deallocate cur
      

  2.   


    DECLARE @name varchar(50)DECLARE cur cursor read_only
    FOR SELECT table1.name FROM table1 LEFT JOIN table2 ON table1.name = table2.nameOPEN cur
    fetch next FROM cur INTO @name
    WHILE (@@fetch_status=0)
    BEGIN
      INSERT INTO table3(name) VALUES(@name)
      fetch next from cur into @name
    END
    CLOSE cur
    deallocate cur
      

  3.   

    一定要在程序层面做吗?可以考虑通过SQL语句来解决。
      

  4.   

    Datarow rows;
    for(int i=0;i<table1.rows.count;i++)
    {
         rows=table2.select("name="+table1.rows[i]["name"]);
         if(rows.length>0)
         {
            table3.rows.add(table1.rows[i]["name"]);
         }
    }
      

  5.   

    DataTable dt1 = new DataTable();
                DataTable dt2 = new DataTable();
                var dt3 = from p in dt1.AsEnumerable()
                          where !(
                          from q in dt2.AsEnumerable()
                          select q.Field<int>("Id")
                          ).Contains(p.Field<int>("Id"))
                          select p;DataTable dt3= new DataTable();
      for (int i = 0; i<dt1.Rows.Count; i++)
      {
       if (比较)
       {
       dt3.ImportRow(dr.Rows[i]);
       }
    }