作者OpenGoodHate (什麽东西什麽东西)
看板C_Sharp
标题Re: [问题] LINQ 子查询该如何写
时间Wed Apr 9 18:11:54 2014
※ 引述《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://webptt.com/cn.aspx?n=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://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1397038317.A.C39.html
1F:推 YahooTaiwan:很漂亮 04/09 18:50
2F:推 AbnerHsu:赞! 04/10 22:17