使用 LINQ 和 XElement 查询 SQL table

Querying SQL table with LINQ and XElement

我不知道这是否可行,但是,我想从 SQL 中的 table 中检索一些字段以及 XML 字段中的特定值在 table 例如

MyTable(UserName varchar(50),XML_Response XML)

注意:字段 XML_Response 中的值在 C# 中的数据类型是 XElement

下面字段XML_Response里面的XML可以有两种形式 | 没有标签内的值更新结果描述:

<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",""

提前谢谢你

作为您正在尝试的替代方法,您可以使用 C# 命令对象和 运行 下面的 SQL 直接在 table:

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

谢谢大家,我找到了解决办法:

.select(x => new
{
   x.UserName,
   UpdateResult = x.MyTable.XML_Response.Element("UpdateResult").Value,
   UpdateResultDescription = x.MyTable.XML_Response.Element("UpdateResultDescription").Value,
});