作者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://www.ptt.cc/bbs/C_Sharp/M.1439929148.A.2E7.html
→ CiC: 印象中LINQ是預設延遲執行的,亦即在跑query那段還不會真的去 08/19 23:37
→ CiC: 查DB,而是到使用時(如ToList或是你下面的foreach讀取時才會 08/19 23:38
→ CiC: 所以逐行執行可能有點問題;可以試著query.ToString印出實際 08/19 23:39
→ CiC: sql語法,拿去SSMS檢查看看為什麼沒資料 08/19 23:39
→ CiC: 啊抱歉,才注意到你是操作DataTable 08/19 23:45
→ CiC: 那會不會是inner join跟left join造成的差異呢? 08/19 23:46
謝謝大大,我最後試著去印出,發現原來我一直以為有資料的table根本沒有資料填進去,
所以後面都不會執行到,真是搞笑了,非常感謝!
※ 編輯: sakey (123.194.23.135), 08/20/2015 00:06:54