C#XML LINQ查询到LIST <>

evi*_*shi 2 c# xml linq list

我正在尝试将XML文档转换为具有预定义类的List <>

我的xml数据集TestData.xml

<Objects>
    <Object ID="1">
        <ItemOne>"Hickory"</ItemOne>
        <ItemTwo>"Dickory"</ItemTwo>
        <ItemThree>"Dock"</ItemThree>
    </Object>

    <Object ID="2">
        <ItemOne>"The"</ItemOne>
        <ItemTwo>"Mouse"</ItemTwo>
        <ItemThree>"Went"</ItemThree>
    </Object>
</Objects>
Run Code Online (Sandbox Code Playgroud)

主程序

class Program
{
    static void Main(string[] args)
    {

        XElement TestData = XElement.Load("TestData.xml");

       List<Test> myTest = new List<Test>(from d in TestData.Descendants("Objects")
                                     select new Test(
                                         d.Element("ItemOne").Value.ToString(),
                                         d.Element("ItemTwo").Value.ToString(),
                                         d.Element("ItemThree").Value.ToString()));

        myTest.ForEach(i => Console.WriteLine("{0} {1} {2}", i.itemOne, i.itemTwo, i.itemThree));

        Console.ReadLine();
    }


}
Run Code Online (Sandbox Code Playgroud)

我正在尝试将数据形成的类

class Test
{
    public string itemOne { get; set; }
    public string itemTwo { get; set; }
    public string itemThree { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想出去

Hickory Dickory Dock
The Mouse went
Run Code Online (Sandbox Code Playgroud)

但我最终一无所获.看起来LINQ Query查找数据但从未将其分配给List<Test>myTest,该值在调试器中显示为null.我不确定我做错了什么.

我想将XML转换为List<Test>所以我可以随机重新排列对象.我只是使用int []数组并按"ID"排序,但我不知道数组的实际长度,并希望在运行中分配它,所以我被迫做了一个list<>.我愿意接受其他建议.

fer*_*ero 5

没有测试,我认为你应该写TestData.Descendants("Object")而不是TestData.Descendants("Objects").参数for Descendants必须与要选择的节点的名称匹配.