使用linq机制 实现datatable连表查询 结果赋值到一个新的datatable

本文介绍了一个使用C#进行DataTable操作的例子,包括创建、克隆数据表以及通过LINQ进行表间连接并更新数据的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

using System.Data;
using System.Linq;

//注意项目要引用System.Data.DataSetExtensions

 

DataTable dtA = new DataTable();
dtA.Columns.Add("id", typeof(int));
dtA.Columns.Add("price", typeof(string));
dtA.Rows.Add(1, "111");
dtA.Rows.Add(2, "222");
dtA.Rows.Add(3, "333");
dtA.Rows.Add(4, "444");
dtA.Rows.Add(5, "555");

DataTable dtB = dtA.Clone();
dtB.Rows.Add(1, "121");
dtB.Rows.Add(2, "221");
dtB.Rows.Add(3, "331");

DataTable dtC = dtA.Clone();
dtC.Columns.Add("price_excel");

var query = from a in dtA.AsEnumerable()
join b in dtB.AsEnumerable()
on a.Field<int>("id") equals b.Field<int>("id") into g
from b in g.DefaultIfEmpty()
select new
{
id = a.Field<int>("id"),
price = a.Field<string>("price"),
price_excel = b == null ? "None" : b.Field<string>("price")
};

query.ToList().ForEach(q => dtC.Rows.Add(q.id, q.price, q.price_excel));

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值