C# Linq俩个list<Datarow> 取差集,并自定义字段
可以自定义类 ,也可以从参考官网文档:Enumerable.Except 方法 (System.Linq) | Microsoft Learn
List<DataRow> list1 = new List<DataRow>(); List<DataRow> list2 = new List<DataRow>(); DataTable dataTable = new DataTable(); dataTable.Columns.Add("ID", typeof(int)); dataTable.Columns.Add("Name", typeof(string)); DataRow row1 = dataTable.NewRow(); row1["ID"] = 1; row1["Name"] = "Alice"; list1.Add(row1); DataRow row2 = dataTable.NewRow(); row2["ID"] = 2; row2["Name"] = "Bob"; list1.Add(row2); DataRow row3 = dataTable.NewRow(); row3["ID"] = 1; row3["Name"] = "Alice"; list2.Add(row3); DataRow row4 = dataTable.NewRow(); row4["ID"] = 3; row4["Name"] = "Dave"; list2.Add(row4); List<DataRow> result = list1.Except(list2, new DataRowComparer("ID")).ToList(); list1 = list1.Where(row => !list2.Contains(row, new DataRowComparer("ID"))).ToList(); list1.RemoveAll(row => list2.Contains(row)); foreach (DataRow row in list1) { Console.WriteLine(row["Name"]); } class DataRowComparer : IEqualityComparer<DataRow> { private readonly string _columnName; public DataRowComparer(string columnName) { _columnName = columnName; } bool IEqualityComparer<DataRow>.Equals(DataRow?x, DataRow?y) { if (x == null || y == null) { return false; } return x[_columnName].Equals(y[_columnName]); } int IEqualityComparer<DataRow>.GetHashCode(DataRow obj) { return obj[_columnName].GetHashCode(); } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~