C#WPF中想把几个datatable合并,最后放到DATAGRID中
1个回答
展开全部
/// <summary>
/// 合并多个结构相同的DataTable
/// </summary>
/// <param name="tables">合并的DataTable数组</param>
/// <param name="pkColName">主键列名称,无主键时此参数无需传值</param>
/// <returns>最终的DataTable合并结果</returns>
public static DataTable MergeTables(DataTable[] tables, string pkColName = null)
{
if (tables.Length == 0) return null;
DataTable totalTable = tables[0].Clone();
for (int i=1;i<tables.Length;i++)
{
var obj = new object[tables[i].Columns.Count];
foreach (DataRow row in tables[i].Rows)
{
if (string.IsNullOrEmpty(pkColName) || totalTable.Rows.Find(row[pkColName]) == null)
{
row.ItemArray.CopyTo(obj, 0);
totalTable.Rows.Add(obj);
}
}
}
return totalTable;
}
更多追问追答
追问
如果有空的DataTable这个程序合并的时候会出问题吗?
追答
for (int i=1;i<tables.Length;i++) {
if(tables[i]==null ||tables[i].Columns.Count==0) continue;
var obj = new object[tables[i].Columns.Count];
foreach (DataRow row in tables[i].Rows)
{
if (string.IsNullOrEmpty(pkColName) || totalTable.Rows.Find(row[pkColName]) == null)
{
row.ItemArray.CopyTo(obj, 0);
totalTable.Rows.Add(obj);
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询