>

다음 조직의 JSON 문자열에 데이터가 있습니다 (예를 들어 한 줄의 형식을 지정했습니다)

[
   {
    "id": 60237,
    "categories": [
       { "name": "name1" },
       { "name": "name2" }]
   }
]

다음 수업을 사용합니다 :

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

JSON.NET을 사용하여 역 직렬화했습니다

Dim entries() As Entry = JsonConvert.DeserializeObject(Of Entry())(JSONSTRING)

는 정의 된 카테고리 이름 목록이있는 "카테고리"필드의 데이터를 LINQ 요청으로 JSON 문자열에서 추출하려고합니다. 예를 들어, 카테고리 이름이 "name1"및 "name2"인 데이터의 각 "라인"을 추출하려고합니다. 이 목록의 형식은 다음과 같습니다. dim desiredcategories = { "name1", "Name2"}

참고 : 범주 이름은 나에 의해 정의되지 않으며 변경할 수 있습니다. 그러나 다른 카테고리가 변경되거나 추가 또는 삭제 된 경우에도 Name1과 Name2는 동일하게 유지됩니다.

VB .NET의 다음 요청에"where"줄을 작성하도록 도와 주실 수 있습니까?

Dim requestanswer = From entry In entries
                    Where ???

참고 : 게시물을 단순화하기 위해 JSON 문자열 내에있는 다른 요소와 다른 클래스와 같은 요청으로 만들어진 "where"행을 넣지 않았습니다.

  • 답변 # 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
    
    

관련 자료

  • 이전 java - 스레드로부터 안전하게 데이터베이스를 읽고 쓰는 방법은 무엇입니까?
  • 다음 matplotlibaxesAxesarrow python 27에서 kwargs를 사용하는 방법