Вытащить XElement - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, подскажите пожалуйста, почему не получается получить элемент xml.Element("history")? Вот исходный xml:
<history xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <row id="bef400d4-bb1c-4393-856d-fb91d2413b33" author="320ab7fc-8b75-4de7-b43a-a6567095841c" sTime="2017-03-14T08:49:51">
    <changedItem id="12a9cb2f-7f43-4861-bae1-a15297f97c89" parentId="bef400d4-bb1c-4393-856d-fb91d2413b33" propertyName="Title">
      <oldValue>ppc lipo 10 мл</oldValue>
      <newValue>ppc lipo 10 мл12</newValue>
      <propertyType>String</propertyType>
    </changedItem>
  </row>
  <row id="f7c67c87-8421-47ba-84c0-271e018b4214" author="320ab7fc-8b75-4de7-b43a-a6567095841c" sTime="2017-03-14T08:50:23">
    <changedItem id="591dc8ab-93e2-46c7-9913-bb69fbc38972" parentId="f7c67c87-8421-47ba-84c0-271e018b4214" propertyName="Title">
      <oldValue>ppc lipo 10 мл12</oldValue>
      <newValue>ppc lipo 10 мл121</newValue>
      <propertyType>String</propertyType>
    </changedItem>
  </row>
</history>
Подразумевается, что в этом xml поле будут и другие корневые элементы, поэтому для моего метода необходимо получить именно тег
 public IEnumerable<HistoryModel> GetHistoryRows(long id)
        {
                XElement  xml = this.Connection.Query<XElement>($@"SELECT XmlInfo FROM dbo.sale_ProductInfo WHERE Id = @id", new { id }).SingleOrDefault().Element("history");
                 //xml = this.Connection.Query<XElement>("SELECT XmlInfo.query('/history') FROM dbo.sale_ProductInfo WHERE Id = @id", new { id }).SingleOrDefault();
          
            if (xml == null)
                return new List<HistoryModel>();
 
            return HistoryModel.GetHistoryRows(xml);
        }
в результате выполнения запроса xml = null, непонятно почему, нужный тег явно там есть, может мешают его аттрибуты?
Или то, что элемент является root элементом?
Здесь есть знатоки XElementa?

Решение задачи: «Вытащить XElement»

textual
Листинг программы
                XElement  xml = this.Connection.Query<XElement>($@"SELECT XmlInfo FROM dbo.sale_ProductInfo WHERE Id = @id", new { id }).SingleOrDefault();
          
            if (xml == null || xml.Name.LocalName != "history")
                return new List<HistoryModel>();
 
            return HistoryModel.GetHistoryRows(xml);

Оцени полезность:

8   голосов , оценка 4.25 из 5