/// <summary>
/// 比较两个DataTable数据(结构相同)
/// </summary>
/// <param name="dtDest">企业数据</param>
/// <param name="dtSrc">入库数据</param>
/// <param name="dtRetAdd">重复数据的表存储</param>
/// <param name="dtRetDel">不重复数据的表存储</param>
public static void CompareDt(DataTable dtSrc, DataTable dtDest, out DataTable dtRetAdd, out DataTable dtRetDel)
{
//不重复表
dtRetDel = dtSrc.Clone();
//重复表
dtRetAdd = dtRetDel.Clone();
int dtcount = dtSrc.Rows.Count; //数据表中数据
int dtscount = dtDest.Rows.Count; //人员录入数据 if (dtcount < dtscount || dtcount == dtscount)
{
for (int i = 0; i < dtscount; i++)
{
string barcode = dtDest.Rows[i][0].ToString();
for (int j = 0; j < dtcount; j++)
{
//用录入表跟数据表进行数据比对
if (barcode == dtSrc.Rows[j][0].ToString())
{
//比对成功 增加到成功表一条数据
dtRetAdd.Rows.Add(dtSrc.Rows[j].ItemArray);
break;
}
//else
//{
// dtRetDel.Rows.Add(dtDest.Rows[j].ItemArray);
//}
}
}
}
if (dtcount > dtscount)
{
for (int i = 0; i < dtcount; i++)
{
string barcode = dtSrc.Rows[i][0].ToString();
for (int j = 0; j < dtscount; j++)
{
//用数据表跟录入表进行数据比对
if (barcode == dtDest.Rows[j][0].ToString())
{
//比对成功 增加到成功表一条数据
dtRetAdd.Rows.Add(dtDest.Rows[j].ItemArray);
break;
}
//else
//{
// dtRetDel.Rows.Add(dtSrc.Rows[j].ItemArray);
//}
}
}
}
}
/// 比较两个DataTable数据(结构相同)
/// </summary>
/// <param name="dtDest">企业数据</param>
/// <param name="dtSrc">入库数据</param>
/// <param name="dtRetAdd">重复数据的表存储</param>
/// <param name="dtRetDel">不重复数据的表存储</param>
public static void CompareDt(DataTable dtSrc, DataTable dtDest, out DataTable dtRetAdd, out DataTable dtRetDel)
{
//不重复表
dtRetDel = dtSrc.Clone();
//重复表
dtRetAdd = dtRetDel.Clone();
int dtcount = dtSrc.Rows.Count; //数据表中数据
int dtscount = dtDest.Rows.Count; //人员录入数据 if (dtcount < dtscount || dtcount == dtscount)
{
for (int i = 0; i < dtscount; i++)
{
string barcode = dtDest.Rows[i][0].ToString();
for (int j = 0; j < dtcount; j++)
{
//用录入表跟数据表进行数据比对
if (barcode == dtSrc.Rows[j][0].ToString())
{
//比对成功 增加到成功表一条数据
dtRetAdd.Rows.Add(dtSrc.Rows[j].ItemArray);
break;
}
//else
//{
// dtRetDel.Rows.Add(dtDest.Rows[j].ItemArray);
//}
}
}
}
if (dtcount > dtscount)
{
for (int i = 0; i < dtcount; i++)
{
string barcode = dtSrc.Rows[i][0].ToString();
for (int j = 0; j < dtscount; j++)
{
//用数据表跟录入表进行数据比对
if (barcode == dtDest.Rows[j][0].ToString())
{
//比对成功 增加到成功表一条数据
dtRetAdd.Rows.Add(dtDest.Rows[j].ItemArray);
break;
}
//else
//{
// dtRetDel.Rows.Add(dtSrc.Rows[j].ItemArray);
//}
}
}
}
}
{
//取出一条
//遍历另一个
foreach(...)
{
}
}
谁以前做过?
{
//不重复表
dtRetDel = dtSrc.Clone();
//重复表
dtRetAdd = dtRetDel.Clone();
DataTable dt = dtSrc.Clone(); DataColumn[] keys = new DataColumn[dtDest.Columns.Count];
for (int i = 0; i < keys.Length; i++)
keys[i] = dtDest.Columns[i];
dtDest.PrimaryKey = keys; foreach (DataRow row in dtSrc.Rows)
{
DataRow checkedRow = dtDest.Rows.Find(row.ItemArray);
if (checkedRow != null)
{
dtRetAdd.Rows.Add(row.ItemArray);
checkedRow.Delete();
}
else
dtRetDel.Rows.Add(row.ItemArray);
}
foreach (DataRow row in dtDest.Rows)
{
if (row.RowState != DataRowState.Deleted)
dtRetDel.Rows.Add(row.ItemArray);
}
dtDest.RejectChanges();
}