我正在尝试在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;。
感谢任何帮助。
答案 0 :(得分:3)
您无法将d.Elements("Choice")
投射到List<string>
使用此
Choices = d.Elements("Choice").Select(x=>(string)x).ToList()
而不是
(List<string>)d.Elements("Choice")