随笔 - 470  文章 - 6  评论 - 20  阅读 - 90万

DataTable的Merge使用

复制代码
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        private static void PrintValues(DataTable table)
        {
            string label = table.TableName;
            Console.WriteLine("TableName: " + table.TableName);

            foreach (DataColumn column in table.Columns)
            {
                Console.Write("\t " + column.ColumnName);
            }
            Console.WriteLine();
            foreach (DataRow row in table.Rows)
            {
                foreach (DataColumn column in table.Columns)
                {
                    Console.Write("\t |{0}|", row[column]);
                }
                Console.WriteLine();
            }
        }
        static void Main(string[] args)
        {
            DataTable dtWs = new DataTable("dtWs");
            //DataColumn dcWsWId = new DataColumn("WID", Type.GetType("System.Int32"));//“System.Data.DataException”类型的未经处理的异常在 System.Data.dll 中发生其他信息: < target >.WID 和<source>.WID 擁有衝突的屬性: DataType 屬性不符。
            DataColumn dcWsWId = new DataColumn("WID", Type.GetType("System.String"));
            DataColumn dcWsFId = new DataColumn("FID", Type.GetType("System.String"));
            DataColumn dcBNId = new DataColumn("ADD", Type.GetType("System.String"));
            dtWs.Columns.Add(dcWsWId);
            dtWs.Columns.Add(dcWsFId);
            dtWs.Columns.Add(dcBNId);
            dtWs.PrimaryKey = new DataColumn[] { dcWsWId, dcWsFId };
            for (int i = 0; i < 5; i++)
            {
                DataRow drNew = dtWs.NewRow();
                drNew["WID"] = i;
                drNew["FID"] = "";
                drNew["ADD"] = "BBBB" + i;
                dtWs.Rows.Add(drNew);
            }
            PrintValues(dtWs);

            DataTable dtQry = new DataTable("dtQry");
            DataColumn dcWId = new DataColumn("WID", Type.GetType("System.String"));
            DataColumn dcFId = new DataColumn("FID", Type.GetType("System.String"));
            DataColumn dcNId = new DataColumn("Name", Type.GetType("System.String"));
            dtQry.Columns.Add(dcWId);
            dtQry.Columns.Add(dcFId);
            dtQry.Columns.Add(dcNId);
            dtQry.PrimaryKey = new DataColumn[] { dcWId, dcFId };
            for (int i = 3; i < 8; i++)
            {
                DataRow drNew = dtQry.NewRow();
                drNew["WID"] = i;
                drNew["FID"] = "";
                drNew["Name"] = "AAAA" + i;
                dtQry.Rows.Add(drNew);
            }
            PrintValues(dtQry);

            dtQry.Merge(dtWs, true, MissingSchemaAction.AddWithKey);
            PrintValues(dtQry);

            dtQry.Merge(dtWs, false, MissingSchemaAction.AddWithKey);
            PrintValues(dtQry);

            Console.Read();
        }
    }
}
复制代码

執行結果:

posted on   chen110xi  阅读(5501)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示