链linq Any()方法找到json

时间:2013-12-05 01:59:14

标签: c# json linq

我在json.net JObject中有以下Json:

{ project: [
         {
             allBuilds: [{id: 1}, {id: 2}, { id:3, id:4,}]
         },
         {
             allBuilds: [{id: 5}, {id: 6}, { id:7, id:8,}]
         }
        ]
}

如果我有一个项目数组,我如何找到包含某个id的项目? 我试过了:

var matchingProject = arrayOfProjects.FirstOrDefault(project => 
project["allBuilds"].Any(build => (int) build["id"] == 5))

1 个答案:

答案 0 :(得分:1)

我会创建一个具体的类,您可以将json反序列化为。 您可以使用JavaScripSerializer执行此操作:http://www.codeproject.com/Tips/210810/Deserialize-JSON-with-C

我认为您不能直接使用LINQ和动态对象,因为您的数据结构必须是IEnumerable<T> for LINQ to work.

在序列化对象上试试这个:

var found = project.SelectMany(b => b.allBuilds).Any(a => a.Id == 5);