LINQ объединяет вложенный уровень родительского элемента между двумя одинаковыми типами записей. - PullRequest
0 голосов
/ 13 апреля 2019

У меня есть набор данных A в формате JSON -

[
  {
    "member_id": 1,
    "member_name": "abc",
    "contacts": [
      {
        "contact_id": 1,
        "name": "contact1"
      },
      {
        "contact_id": 2,
        "name": "contact2"
      },
      {
        "contact_id": 3,
        "name": "contact3"
      }
    ]
  },
  {
    "member_id": 2,
     "member_name": "abc1",
     "contacts": [
      {
        "contact_id": 3,
        "name": "contact3"
      },
      {
        "contact_id": 4,
        "name": "contact4"
      },
      {
        "contact_id": 5,
        "name": "contact5"
      }
    ]
  }
]

У меня есть набор данных B в формате JSON -

[
  {
    "member_id": 1,
    "member_name": "abc",
    "contacts": [
      {
        "contact_id": 1,
        "name": "contact1"
      }
    ]
  },
  {
    "member_id": 2,
     "member_name": "abc1",
     "contacts": [
      {
        "contact_id": 3,
        "name": "contact3"
      }
    ]
  }
]

Я изо всех сил пытаюсь завершить соединение в LINQ так, чтобы конечный результат был ниже -

[
  {
    "member_id": 1,
    "member_name": "abc",
    "contacts": [
      {
        "contact_id": 1,
        "name": "contact1"
      },
      {
        "contact_id": null,
        "name": "contact2"
      },
      {
        "contact_id": null,
        "name": "contact3"
      }
    ]
  },
  {
     "member_id": 2,
     "member_name": "abc1",
     "contacts": [
      {
        "contact_id": 3,
        "name": "contact3"
      },
      {
        "contact_id": null,
        "name": "contact4"
      },
      {
        "contact_id": null,
        "name": "contact5"
      }
    ]
  }
]

Я объясняю выше как в SQL так же, как -

SELECT 
        Member.member_id    
        ,Member.member_name     
        ,(SELECT 
            um.contact_id   
            ,xi.name     AS Name
        FROM User_match um RIGHT JOIN #xmlInput xi ON um.contact_id = xi.contact_id
             FOR XML PATH('User'),TYPE, ELEMENTS XSINIL  ) As Users
         FROM #xmlMembers Member WITH (NOLOCK)
         FOR XML Path('Home'), ELEMENTS

Я изо всех сил пытаюсь сделать точный вывод в LINQ. Как это сделать на подуровне из родительского в LINQ с присоединением LEFT / RIGHT, если я рассмотрю два набора данных выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...