改进Linq语句选择Json

时间:2012-04-13 18:01:08

标签: json linq json.net

我有一些像这样的json:

[{
    "id": "20148324",
    "teacher", "Mr Jones",
    "names": ["john", "bill", "ben"],
    "priority": 2
},
{ 
    "id": "56128324",
    "teacher", "Mrs Jones"
    "names": ["john", "bill", "ben"],
    "priority": 1
}]

我希望能够首先选择优先级值为1的子项,然后在该子项中我想在嵌套名称数组中选择姓氏。

我可以通过两个步骤完成此任务,但想知道如何使用一个linq语句来完成它。

这是我到目前为止所得到的,但我只添加了一个字典项目。如何将所有名称与教师姓名分别添加到词典中:

var things = response.Where(p => p["priority"].Value<int>() == 1)
                             .ToDictionary(m => m["teacher"].ToString(),
                                           m => m["names"].Children().ToString());

1 个答案:

答案 0 :(得分:0)

最终做到了这一点。不相信它是最好的方式,但它确实有效。

var data = response.Where(p => p["priority"].Value<int>() == 1)
                             .SelectMany(s=>s["names"])
                             .ToDictionary(m => m.Value<string>(),
                                           m => m.Parent.Parent.Parent["teacher"].ToString());