有两个datatable,dt1中有姓名,学号,dt2中只有name,除了遍历怎样将dt1中姓名这一列存在但是dt2中usename没有的数据保存到一个新的datatable中
2条回答 默认 最新
- 码老头 2021-12-20 16:51关注
除了遍历DataTable的每行数据外,还可以使用LINQ将DataTable转换成字典集合,之前我回答过类似的问题,请参考:
以下是本问题的一种实现方案,供教参:
using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text.Json; namespace ConsoleApp2 { public class MyProgram { static void Main(string[] args) { DoWork(); Console.ReadKey(); } static void DoWork() { var dt1 = new DataTable(); dt1.Columns.Add("No"); dt1.Columns.Add("Name"); dt1.Rows.Add(1, "Tom1"); dt1.Rows.Add(2, "Tom2"); dt1.Rows.Add(3, "Tom3"); var list1 = dt1.ConvertToList(); Console.WriteLine("table 1中的数据..."); Console.WriteLine(JsonSerializer.Serialize(list1)); var dt2 = new DataTable(); dt2.Columns.Add("Name"); dt2.Rows.Add("Tom1"); dt2.Rows.Add("Tom3"); var list2 = dt2.ConvertToList(); Console.WriteLine("table 2中的数据..."); Console.WriteLine(JsonSerializer.Serialize(list2)); var result = list1.Where(x => !list2.Any(a => a["Name"] == x["Name"])); Console.WriteLine("对比后的数据..."); Console.WriteLine(JsonSerializer.Serialize(result)); } } public static class DataTableExtension { public static List<Dictionary<string, string>> ConvertToList(this DataTable dataTable) { return dataTable.AsEnumerable().Select( row => dataTable.Columns.Cast<DataColumn>().ToDictionary( column => column.ColumnName, // 键 column => row[column] as string // 值 ) ).ToList(); } } }
运行结果:
table 1中的数据... [{"No":"1","Name":"Tom1"},{"No":"2","Name":"Tom2"},{"No":"3","Name":"Tom3"}] table 2中的数据... [{"Name":"Tom1"},{"Name":"Tom3"}] 对比后的数据... [{"No":"2","Name":"Tom2"}]
解决 无用评论 打赏 举报
悬赏问题
- ¥15 apdl语言如何增加受力分析
- ¥15 算法对比:学校优化算法与蚁群算法对比
- ¥15 机电一体化系统设计说明书
- ¥20 sgy数据提取地震波速,有人能回答吗小馋
- ¥20 c#实现打开word的功能,并且需要安装成windows服务,word打不开怎么办
- ¥15 python用ARIMA时间预测模型预测数据出错,急!
- ¥30 为什么后端传给前端vue的河流json数据不在地图中显示出来
- ¥50 关于弹性波动方程求解的问题:
- ¥100 C# 做 10个串口数据采集;采集数据填到 EXE表中;1路与PLC MODBUS通讯 ;要求速度尽量快点; 有能做完整程序的单聊,重酬
- ¥15 P0口接8个LED,编写程序,并绘制proteus仿真电路原理图