Linq from XML to Object with one Element ToList<>



我正在尝试对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>

代码直到运行时才显示任何错误,然后在运行代码时我得到了一个强制转换错误。无法将"d__11"类型的对象强制转换为"System.Collections.Generic.List `1[System.String]"类型。

感谢您的帮助。

不能将d.Elements("Choice")强制转换为List<string>

使用此

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

而不是

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

最新更新