日期:2014-05-18  浏览次数:20819 次

关于2个dataset筛选数据的问题
dataset1是从sqlserver查询的数据集10w条记录,dataset2是从mysql取的数据集500条记录,现在要筛选10w条数据里和500条相关的,不相关的删掉,以前的做法是2层循环,代码如下:
dsCheck是500条数据结果集,dtTemp是10w条数据结果集。

  for (int w = 0; w < dtTemp.Rows.Count; w++)
  {
  boolDel = true;
  for (int z = 0; z < dsCheck.Tables[0].Rows.Count; z++)
  {
  object ojF = dsCheck.Tables[0].Rows[z][0];
  object ojS = dtTemp.Rows[w][6];

  if (ojF == DBNull.Value)
  {
  ojF = -1;
  }
  if (ojS == DBNull.Value)
  {
  ojS = -1;
  }
  if (Convert.ToInt64(ojF) == Convert.ToInt64(ojS))
  {
  boolDel = false;
  break;
  }
  }
  if (boolDel == true)
  dtTemp.Rows[w].Delete();
  }
  dtTemp.AcceptChanges();


方法很慢,后来考虑用dataset里边的select方法,但调了半天也没调明白,可否有人能帮忙给点提示,或就着这段代码给点修改,谢谢!

------解决方案--------------------
string sel = "";
foreach(DataRow row in dsCheck.Table[0].Rows)
{
sel += "'" + row[0] + "',";
}
sel = sel.Substring(0, sel.Length - 1);
DataRow[] dataRow=dtTemp.table[0].select("列名 in ("+sel+")");
foreach(DataRow row in dataRow)
{
dtTemp.Rows.remove(row);
}


1.在查询数据库时如:select row1,row2 from tabel
其中的列名就是row1或者row2,你这里对应的是dtTemp.Columns[6]这列,不好意思刚才有点错误