LINQ类型预计

use*_*636 4 c# xml linq

有以下linq代码,尝试将xml文件解析为数据表,但我在结果数据表中得到奇怪的值,所有单元格值显示为

System.Xml.Ling.XContainer+<GetElements>d_11
Run Code Online (Sandbox Code Playgroud)

这是我的LINQ

            XDocument doc1 = XDocument.Load(@"D:\m.xml");
            var q = from address in doc1.Root.Elements("Address")
                    let name = address.Elements("Name")
                    let street = address.Elements("Street")
                    let city = address.Elements("city")
                    select new
                    {
                        Name = name,
                        Street = street,
                        City = city
                    };

            var xdt = new DataTable();

            xdt.Columns.Add("Name", typeof(string));
            xdt.Columns.Add("Street", typeof(string));
            xdt.Columns.Add("City", typeof(string));

            foreach (var address in q)
            {
                xdt.Rows.Add(address.Name, address.Street, address.City);
            }

            dataGrid1.ItemsSource = xdt.DefaultView;
Run Code Online (Sandbox Code Playgroud)

这是我的xml:

<PurchaseOrder PurchaseOrderNumber="99503" OrderDate="1999-10-20">
  <Address Type="Shipping">
    <Name>Ellen Adams</Name>
    <Street>123 Maple Street</Street>
    <City>Mill Valley</City>
    <State>CA</State>
    <Zip>10999</Zip>
    <Country>USA</Country>
  </Address>
  <Address Type="Billing">
    <Name>Tai Yee</Name>
    <Street>8 Oak Avenue</Street>
    <City>Old Town</City>
    <State>PA</State>
    <Zip>95819</Zip>
    <Country>USA</Country>
  </Address>
</PurchaseOrder>
Run Code Online (Sandbox Code Playgroud)

这是我得到的结果! 在此输入图像描述

Sas*_*sha 5

你忘了重读XElements的内在文本.所以你要选择具有属性等的整个元素.使用这部分代码:

var q = from address in doc1.Root.Elements("Address")
let name = address.Element("Name")
let street = address.Element("Street")
let city = address.Element("city")
select new
{
    Name = name.Value,
    Street = street.Value,
    City = city.Value
};
Run Code Online (Sandbox Code Playgroud)