看板 C_Sharp 關於我們 聯絡資訊
各位大大好, 我最近在用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