Re: [問題] LINQ 子查詢該如何寫

看板C_Sharp (C#)作者 (什麼東西什麼東西)時間11年前 (2014/04/09 18:11), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《OpenGoodHate (什麼東西什麼東西)》之銘言: : 標題: [問題] LINQ 子查詢該如何寫 : 時間: Wed Apr 9 12:07:47 2014 : 研究了好久linq 子查詢 : google 都只有教在where 條件下的作法 : 自己寫了一支在select 的時後子查詢 : 但是動作確有錯誤 : 貼上程式碼請有經驗的板友指導一下 : : 原始JSON : { "is":false, : "lay":[ { "des":"", "id":"8891", "Enable":true,"glb":1}, : { "des":"", "id":"33456", "Enable":true, "glb":2 }], : "Urlist":[ {"glb":1,"Url":"http://tw.yahoo.com/YHO01"}, : {"glb":2,"Url":"http://tw.yahoo.com/YHO09"} ] } : : 目前LINQ 的寫法 : : JObject layCount = resultJsObj;//上面的JSON 己在resultJsObj 中 : : var aa = from x in layCount["lay"] : select new { lay = x["id"], : glb = ( from y in layCount["Urlist"] : where ( int ) y["glb"] == ( int ) x["glb"] : select y["Url"]) : }; : : 我想要的輸出 : aa.lay => 8891 : aa.glb => http://tw.yahoo.com/YHO01 : : aa.lay => 33456 : aa.glb => http://tw.yahoo.com/YHO01 : : 但是實際上 glb 欄位這樣的寫法是錯誤的 : : 想請問正確的linq 子查詢 寫法應該如何下才會正確作動 : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.251.38.1 : ※ 文章網址: http://www.ptt.cc/bbs/C_Sharp/M.1397016470.A.B72.html : ※ 編輯: OpenGoodHate (60.251.38.1), 04/09/2014 12:09:27 : → AndyLeo:要不要把兩個from...的敘述句寫在一起試試? 04/09 14:17 : → AndyLeo:應該要處理x["glb"]沒有符合或符合多筆y["glb"]的情形 04/09 14:18 感謝AndyLeo大的指導 改寫成以下程式碼之後可以正常運作 並達感我想要的效果 var aa = from x in layCount["lay"] from y in layCount["Urlist"] where ( int ) y["glb"] == ( int ) x["glb"] select new { lay = x["id"],glb = y["Url"]}; -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.251.38.1 ※ 文章網址: http://www.ptt.cc/bbs/C_Sharp/M.1397038317.A.C39.html

04/09 18:50, , 1F
很漂亮
04/09 18:50, 1F

04/10 22:17, , 2F
讚!
04/10 22:17, 2F
文章代碼(AID): #1JHHpjmv (C_Sharp)
文章代碼(AID): #1JHHpjmv (C_Sharp)