linq to mysql 左关联_Linq to DataTable 左连接

这篇博客通过创建两个DataTable模拟数据,探讨了如何使用Linq to DataTable进行左关联查询。在查询过程中遇到的问题是,当右表数据为空时,结果中相应字段返回null。为解决这个问题,博主采用三元表达式在GradeName字段中进行空值判断,确保了查询结果符合预期。文章最后,博主希望这个例子能帮助初学者,并欢迎经验丰富的同行提出建议。
摘要由CSDN通过智能技术生成

所先创建2个DataTable并对其赋值,来进行模拟.

DataTable dt1 = new DataTable();

dt1.Columns.Add("ID", typeof(int));

dt1.Columns.Add("Name", typeof(string));

dt1.Columns.Add("GradeId", typeof(int));

DataTable dt2 = new DataTable();

dt2.Columns.Add("ID", typeof(int));

dt2.Columns.Add("Name", typeof(string));

for (int i = 0; i < 6; i++)

{

DataRow dr1 = dt1.NewRow();

dr1["ID"] = i + 1;

dr1["Name"] = "zzq" + (i + 1);

dr1["GradeId"] = i + 1;

dt1.Rows.Add(dr1);

}

for (int i = 0; i < 4; i++)

{

DataRow dr2 = dt2.NewRow();

dr2["ID"] = i + 1;

dr2["Name"] = i + 1 + "班";

dt2.Rows.Add(dr2);

}

需求大概是这样的。

查询出的数据应该包括(ID,NAME,GradeName)

但有个问题是

b对象和a对象关联查询出来到temp对象中第4条和第5条数据为null.

刚开以为直接取temp的数据就OK了,可是报了值不能为null的错误

f1c06b5070725a21059862e7d848e6d1.png

所以看了一下temp查出来的数据其中4和5查出来的数据为null,这样拿不到需求想要的结果

e1e20ead17b490817a88159dd79a9076.png

所以在GradeName中加了一个三元表达式的判断,如下代码。

var reslut = (from b indt1.AsEnumerable()

join aindt2.AsEnumerable()

onnew { temp = b.Field("GradeId") } equals new { temp = a.Field("ID") }

into tempfrom t intemp.DefaultIfEmpty()select

new {ID=b.Field("ID"),Name=b.Field("Name"),GradeName = t==null?0:t["Name"] }).ToList();

最终显示结果:

d7b651e3b7aecb162706ac807acda9f6.png

亲,帮到您了吗?楼主也刚入行没多久,希望能给刚入行的同学们一点小帮助。

也希望走在前面的前辈们能给些好的建议和意见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值