关于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]这列,不好意思刚才有点错误