C#WPF中想把几个datatable合并,最后放到DATAGRID中

急求大侠帮忙,最好能详细讲解,如果行的话,采纳会再多给积分... 急求大侠帮忙,最好能详细讲解,如果行的话,采纳会再多给积分 展开
 我来答
Anigado1992
2016-11-18 · TA获得超过125个赞
知道小有建树答主
回答量:147
采纳率:0%
帮助的人:121万
展开全部
/// <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);
                    }
                }
            }
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式