我有一个带有以下组织的JSON字符串中的数据(为了给你一个例子,我已经格式化了一行)
Tuple2[A, B]
我使用以下课程:
[
{
"id": 60237,
"categories": [
{ "name": "name1" },
{ "name": "name2" }]
}
]
我使用JSON.NET
进行了反序列化Public Class Entry
Public Property Id As Integer
Public Property Categories As Category()
End Class
Public Class Category
Public Property Name As String
End Class
希望使用LINQ请求从JSON字符串中提取“categories”字段中包含已定义类别名称列表的数据。 例如,我想提取每一行""类别名称为" name1"和" name2"。列表可以采用以下形式:dim desiredcategories = {" name1"," Name2"}
注意:类别的名称不是由我定义的,可以更改。但是,即使其他类别更改或添加或删除,Name1和Name2也保持不变。
您能帮我在VB .NET中将“where”行写入以下请求吗?
Dim entries() As Entry = JsonConvert.DeserializeObject(Of Entry())(JSONSTRING)
注意:为了简化帖子,我没有把其他元素放在JSON字符串和其他类中以及其他类中"其中"在同一请求中的行。
答案 0 :(得分:1)
将所需的类别名称保留在列表中:
Dim list As New List(Of String)
list.Add("name1")
list.Add("name2")
然后,您可以使用以下代码根据所需类别进行过滤:
Dim entries as new List(of Entry)
Dim entry1 as new Entry()
entry1.Id = 60237
Dim category1 as new Category()
category1.Name = "name1"
Dim category2 as new Category()
category2.Name = "name2"
Dim c as new List(of Category)
c.Add(category1)
c.Add(category2)
entry1.Categories = c.ToArray()
entries.Add(entry1)
Dim list As New List(Of String)
list.Add("name1")
list.Add("name2")
Dim requestanswer =(From entry In entries Where(From category In entry.Categories Where list.Contains(category.Name)).Count() > 0 select entry).ToList()
for each ra as Entry in requestanswer
Console.WriteLine(ra.id)
next