[問題] LINQ去Join Datatable

看板C_Sharp (C#)作者 (花枝丸)時間10年前 (2015/08/19 04:19), 10年前編輯推噓0(006)
留言6則, 1人參與, 最新討論串1/1
各位大大好, 我最近在用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

08/19 23:37, , 1F
印象中LINQ是預設延遲執行的,亦即在跑query那段還不會真的去
08/19 23:37, 1F

08/19 23:38, , 2F
查DB,而是到使用時(如ToList或是你下面的foreach讀取時才會
08/19 23:38, 2F

08/19 23:39, , 3F
所以逐行執行可能有點問題;可以試著query.ToString印出實際
08/19 23:39, 3F

08/19 23:39, , 4F
sql語法,拿去SSMS檢查看看為什麼沒資料
08/19 23:39, 4F

08/19 23:45, , 5F
啊抱歉,才注意到你是操作DataTable
08/19 23:45, 5F

08/19 23:46, , 6F
那會不會是inner join跟left join造成的差異呢?
08/19 23:46, 6F
謝謝大大,我最後試著去印出,發現原來我一直以為有資料的table根本沒有資料填進去, 所以後面都不會執行到,真是搞笑了,非常感謝! ※ 編輯: sakey (123.194.23.135), 08/20/2015 00:06:54
文章代碼(AID): #1LqvCyBd (C_Sharp)
文章代碼(AID): #1LqvCyBd (C_Sharp)