DataTable与List之间的交集、差集

在C#项目中,常常需要处理DataTable与List之间的数据对比,例如找出它们的交集和差集。这篇博客分享了如何使用Lambda表达式来实现不同类型的交集和差集计算,并提供了具体的代码示例,帮助开发者轻松处理数据更新操作。

C# 项目中经常遇到这样的情况:选定的项与原DataTable中的数据进行对比,将数据变动部分利用Adapter写入数据库。

对于同一类型的而言很容易实现,而对于不同类型而言则看似复杂,实则也很简单


以下是取交集代码:

    public partial class Program
    {
        static void Main(string[] args)
        {
            List<Class> list = new List<Class>();
            list.Add(new Class() { Id = 1, Caption = "a" });
            list.Add(new Class() { Id = 2, Caption = "b" });
            list.Add(new Class() { Id = 3, Caption = "c" });
            list.Add(new Class() { Id = 5, Caption = "d" });
            list.Add(new Class() { Id = 6, Caption = "e" });

            DataTable dt = new DataTable();
            dt.Columns.Add("Id", typeof(int));
            dt.Columns.Add("Text", typeof(string));
            dt.Rows.Add(1, "第一行");
            dt.Rows.Add(2, "第二行");
            dt.Rows.Add(3, "第三行");
            dt.Rows.Add(4, "第四行");
            var row = dt.AsEnumerable().Where(x =>
            {
                return (from a in list where a.Id == x.Field<int>("Id") select a).Any();
            });
            row.ToList().ForEach(x => { Console.WriteLine(x.Field<string>("Text")); });
            Console.ReadKey();

             
        }
    }
    public class Class
    {
        public Class() { }
        public int Id { get; set; } = 0;
        public string Caption { get; set; } = "";
    }

运行结果


若要实现差集,只需将Lambda改为以下形式即可。

 return !(from a in list where a.Id == x.Field<int>("Id") select a).Any();




评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值