使用 Linq 从数据库中获取 XML 数据

Using Linq to get XML data from database

我正在努力使用 Linq 获取单个 xml 节点的值。

这是我的XML。

       <?xml version="1.0" encoding="utf-8"?>
       <record>
       <AddressLine1>abcd street</AddressLine1>
       <AddressLine2>xyz AVE</AddressLine2>
       <AddressCity>Illinois</AddressCity>
       <AddressState>Chicago</AddressState>
       <AddressZip>23434</AddressZip>
       </record>

这是我的 C# 代码

    XElement xmlDoc = XElement.Parse(varQ.Content);
       //When I debug I find that xmlDoc contains the XML. So that is alright.

    var q = (from lpi in xmlDoc.Descendants("record")
            select new { AddressLine1 = lpi.Element("AddressLine1").Value,
            AddressLine2 = lpi.Element("AddressLine2").Value,
            AddressCity = lpi.Element("AddressCity").Value,
            AddressCountry = lpi.Element("AddressCountry").Value,
            AddressState = lpi.Element("AddressState").Value,
            AddressZip = lpi.Element("AddressZip").Value,
            }).FirstOrDefault();

var q 显示为空。你能帮我看看这里出了什么问题吗?

替换 DescendantsAndSelf 上的后代:

 string xml = @"<?xml version=""1.0"" encoding=""utf-8""?>
       <record>
       <AddressLine1>abcd street</AddressLine1>
       <AddressLine2>xyz AVE</AddressLine2>
       <AddressCity>Illinois</AddressCity>
       <AddressState>Chicago</AddressState>
       <AddressZip>23434</AddressZip>
       </record>";

            XElement xmlDoc = XElement.Parse(xml);
            var q = (from lpi in xmlDoc.DescendantsAndSelf("record")
                     select new
                     {
                         AddressLine1 = (string)lpi.Element("AddressLine1"),
                         AddressLine2 = (string)lpi.Element("AddressLine2"),
                         AddressCity = (string)lpi.Element("AddressCity"),
                         AddressCountry = (string)lpi.Element("AddressCountry"),
                         AddressState = (string)lpi.Element("AddressState"),
                         AddressZip = (string)lpi.Element("AddressZip"),
                     }).FirstOrDefault();
            Console.WriteLine(q);

打印:

{ AddressLine1 = abcd street, AddressLine2 = xyz AVE, AddressCity = Illinois, AddressCountry = , AddressState = Chicago, AddressZip = 23434 }

Link: https://dotnetfiddle.net/fXQivX