作者sakey (花枝丸)
看板C_Sharp
标题[问题] LINQ去Join Datatable
时间Wed Aug 19 04:19:06 2015
各位大大好,
我最近在用C#写网页,
想使用LINQ去Join Datatable,
但一直会有问题,
以下为程式码,
var query = from A in resultA.AsEnumerable()
join B in resultB.AsEnumerable()
on A.Field<string>("NAME") equals B.Field<string>("NAME")
select new
{
C = B.Field<string>("MEMBER")
};
foreach (var q in query)
{
newRow["MEMBER"] = q.C.ToString();
}
我试着用逐行执行,
发现他都会在执行完A.Field<string>("NAME") 然後就跳出,
而且是有抓到A表的字串,
但就是不会执行到後面的equals跟上面的join,
所以query完全没资料,
请问这样到底是发生了什麽问题呢?
感谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.194.23.135
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1439929148.A.2E7.html
1F:→ CiC: 印象中LINQ是预设延迟执行的,亦即在跑query那段还不会真的去 08/19 23:37
2F:→ CiC: 查DB,而是到使用时(如ToList或是你下面的foreach读取时才会 08/19 23:38
3F:→ CiC: 所以逐行执行可能有点问题;可以试着query.ToString印出实际 08/19 23:39
4F:→ CiC: sql语法,拿去SSMS检查看看为什麽没资料 08/19 23:39
5F:→ CiC: 啊抱歉,才注意到你是操作DataTable 08/19 23:45
6F:→ CiC: 那会不会是inner join跟left join造成的差异呢? 08/19 23:46
谢谢大大,我最後试着去印出,发现原来我一直以为有资料的table根本没有资料填进去,
所以後面都不会执行到,真是搞笑了,非常感谢!
※ 编辑: sakey (123.194.23.135), 08/20/2015 00:06:54