Linq从XML到Object,带有一个元素ToList<>

时间:2014-09-07 19:23:05

标签: c# xml linq

我正在尝试在xml文档上执行LINQ查询。输出应该是Quiz类型的列表。该对象的一个​​成员也是一个列表,但它是类型字符串列表。该代码适用于除了需要放入类型字符串List的一个元素之外的所有内容。我到处寻找,似乎找不到适合这种情况的语法。

“守则”看起来像这样。

public static List<Quiz> QuizBuilder()
    {
        XDocument data = XDocument.Load("Data.xml");
        List<Quiz> newquiz = (from d in data.Descendants("Object")
                              select new Quiz(
                                          (string)d.Element("Question"),
                                          (string)d.Element("Answer"),
                                       //This next line does not work
                                          (List<string>)d.Elements("Choice")
                                          )).ToList();
        return newquiz;
    }

xml看起来像这样。

 <Root>
    <Object>
       <Question>Question 1</Question>
       <Answer>a</Answer>
       <Choice>a</Choice>
       <Choice>b</Choice>
       <Choice>c</Choice>
       <Choice>d</Choice>
    </Object>
 </Root>

代码在运行时没有显示任何错误,然后在代码运行时出现转换错误。 无法投射类型&#39; d__11&#39;输入&#39; System.Collections.Generic.List`1 [System.String]&#39;。

感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

您无法将d.Elements("Choice")投射到List<string>

使用此

Choices = d.Elements("Choice").Select(x=>(string)x).ToList()

而不是

(List<string>)d.Elements("Choice")