阿里妈妈,帮你实现网络赚钱梦,流量变成现金!
最近做的东西,都是在操作一些DataTable,就写了几个方法,方便以后的使用使用Merge合并两个DataTable并去除重复数据,要求两个表的列相同。要实现merge时去除重复数据,得设置新Datatable的主键。
复制内容到剪贴板
程序代码
程序代码public DataTable GetTable(DataTable FirstTable, DataTable SecondTable)
{
DataTable ResultTable = FirstTable.Copy();
if (FirstTable.Columns.Count != SecondTable.Columns.Count)
return ResultTable;
DataColumn[] keys = new DataColumn[ResultTable.Columns.Count];
for (int k = 0; k < ResultTable.Columns.Count; k++)
{
keys[k] = ResultTable.Columns[k];
}
ResultTable.PrimaryKey = keys;
ResultTable.Merge(SecondTable);
return ResultTable;
}
{
DataTable ResultTable = FirstTable.Copy();
if (FirstTable.Columns.Count != SecondTable.Columns.Count)
return ResultTable;
DataColumn[] keys = new DataColumn[ResultTable.Columns.Count];
for (int k = 0; k < ResultTable.Columns.Count; k++)
{
keys[k] = ResultTable.Columns[k];
}
ResultTable.PrimaryKey = keys;
ResultTable.Merge(SecondTable);
return ResultTable;
}
下面这个函数是获取两个DataTable中共同的数据,然后存到一个新的Datatable中,用到了DataRelation。这个是根据网上的一段代码修改的
复制内容到剪贴板
程序代码
程序代码public DataTable GetSameRecords(DataTable FirstTable, DataTable SecondTable)
{
DataTable ResultTable = new DataTable("ResultTable");
if (FirstTable.Columns.Count != SecondTable.Columns.Count)
return ResultTable;
DataSet ds = new DataSet();
ds.Tables.AddRange(new DataTable[] { FirstTable.Copy(), SecondTable.Copy() });
DataColumn[] firstColumns = new DataColumn[ds.Tables[0].Columns.Count];
for (int i = 0; i < firstColumns.Length; i++)
{
firstColumns[i] = ds.Tables[0].Columns[i];
}
DataColumn[] secondColumns = new DataColumn[ds.Tables[1].Columns.Count];
for (int i = 0; i < secondColumns.Length; i++)
{
secondColumns[i] = ds.Tables[1].Columns[i];
}
DataRelation r1 = new DataRelation(string.Empty, firstColumns, secondColumns, false);
ds.Relations.Add(r1);
DataColumn[] keys = new DataColumn[firstColumns.Length];
for (int i = 0; i < firstColumns.Length; i++)
{
DataColumn dc = new DataColumn(firstColumns[i].ColumnName, firstColumns[i].DataType);
ResultTable.Columns.Add(dc);
keys[i] = dc;
}
ResultTable.PrimaryKey = keys;
ResultTable.BeginLoadData();
foreach (DataRow parentrow in ds.Tables[0].Rows)
{
DataRow[] childrows = parentrow.GetChildRows(r1);
if (childrows != null && childrows.Length != 0 && ResultTable.Rows.Contains(parentrow.ItemArray) == false)
ResultTable.LoadDataRow(parentrow.ItemArray, true);
}
ResultTable.EndLoadData();
return ResultTable;
}
{
DataTable ResultTable = new DataTable("ResultTable");
if (FirstTable.Columns.Count != SecondTable.Columns.Count)
return ResultTable;
DataSet ds = new DataSet();
ds.Tables.AddRange(new DataTable[] { FirstTable.Copy(), SecondTable.Copy() });
DataColumn[] firstColumns = new DataColumn[ds.Tables[0].Columns.Count];
for (int i = 0; i < firstColumns.Length; i++)
{
firstColumns[i] = ds.Tables[0].Columns[i];
}
DataColumn[] secondColumns = new DataColumn[ds.Tables[1].Columns.Count];
for (int i = 0; i < secondColumns.Length; i++)
{
secondColumns[i] = ds.Tables[1].Columns[i];
}
DataRelation r1 = new DataRelation(string.Empty, firstColumns, secondColumns, false);
ds.Relations.Add(r1);
DataColumn[] keys = new DataColumn[firstColumns.Length];
for (int i = 0; i < firstColumns.Length; i++)
{
DataColumn dc = new DataColumn(firstColumns[i].ColumnName, firstColumns[i].DataType);
ResultTable.Columns.Add(dc);
keys[i] = dc;
}
ResultTable.PrimaryKey = keys;
ResultTable.BeginLoadData();
foreach (DataRow parentrow in ds.Tables[0].Rows)
{
DataRow[] childrows = parentrow.GetChildRows(r1);
if (childrows != null && childrows.Length != 0 && ResultTable.Rows.Contains(parentrow.ItemArray) == false)
ResultTable.LoadDataRow(parentrow.ItemArray, true);
}
ResultTable.EndLoadData();
return ResultTable;
}
[本日志由 老狼 于 2010-09-02 10:58 PM 编辑]
文章来自: 本站原创
文章标签: c# datatable 代码
网摘收录:
相关日志:
发表评论
上一篇:
下一篇: 