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