Запрос таблицы SQL с помощью LINQ и XElement - PullRequest
1 голос
/ 09 марта 2019

Я не знаю, возможно ли это сделать, но я хочу извлечь из таблицы в SQL несколько полей плюс определенное значение внутри поля XML в таблице, например,

MyTable(UserName varchar(50),XML_Response XML)

примечание: тип данных в C # для значения в поле XML_Response равен XElement

Поле XML внутри XML_Response ниже может быть в двух формах с | без значения внутри тега Обновление Описание результата:

<IntegrationResults>
  <UpdateResult>Failure</UpdateResult>
  <UpdateResultDescription>LeadId 2876474 not found</UpdateResultDescription>
</IntegrationResults>
<IntegrationResults>
    <UpdateResult>Success</UpdateResult>
    <UpdateResultDescription />
</IntegrationResults>

Вывод моего запроса. Я хочу выглядеть так (2 строки в качестве примеров)

"My User Name","LeadId 83608 not found"
"My User Name 2",""

заранее спасибо

Ответы [ 2 ]

1 голос
/ 11 марта 2019

спасибо всем, мне удалось найти решение:

.select(x => new
{
   x.UserName,
   UpdateResult = x.MyTable.XML_Response.Element("UpdateResult").Value,
   UpdateResultDescription = x.MyTable.XML_Response.Element("UpdateResultDescription").Value,
});
1 голос
/ 11 марта 2019

В качестве альтернативы тому, что вы пытаетесь, вы можете использовать объект команды C # и запустить приведенный ниже SQL непосредственно в таблице:

SELECT UserName
      , IntegrationResults.n.value('UpdateResultDescription[1]','VARCHAR(200)') as UpdateResultDescription
  FROM  MyTable
        outer apply MyTable.XML_Response.nodes('/IntegrationResults') AS IntegrationResults(n);
...