C# 使用一个元素ToList将Linq从XML转换为对象<&燃气轮机;
我正在尝试对xml文档执行LINQ查询。输出应该是类型测试的列表。对象的一个成员也是列表,但它是字符串类型的列表。该代码适用于除需要放入字符串类型列表中的一个元素之外的所有元素。我到处都找过了,似乎找不到适合这个场景的正确语法 代码看起来像这样C# 使用一个元素ToList将Linq从XML转换为对象<&燃气轮机;,c#,xml,linq,C#,Xml,Linq,我正在尝试对xml文档执行LINQ查询。输出应该是类型测试的列表。对象的一个成员也是列表,但它是字符串类型的列表。该代码适用于除需要放入字符串类型列表中的一个元素之外的所有元素。我到处都找过了,似乎找不到适合这个场景的正确语法 代码看起来像这样 public static List<Quiz> QuizBuilder() { XDocument data = XDocument.Load("Data.xml"); List<Quiz>
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;
}
<Root>
<Object>
<Question>Question 1</Question>
<Answer>a</Answer>
<Choice>a</Choice>
<Choice>b</Choice>
<Choice>c</Choice>
<Choice>d</Choice>
</Object>
</Root>
publicstaticlist QuizBuilder()
{
XDocument data=XDocument.Load(“data.xml”);
List newquick=(来自data.substands(“对象”)中的d)
选择新测验(
(字符串)d.元素(“问题”),
(字符串)d.元素(“答案”),
//下一行行不通
(列表)d.要素(“选择”)
)).ToList();
返回newquick;
}
xml看起来像这样
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;
}
<Root>
<Object>
<Question>Question 1</Question>
<Answer>a</Answer>
<Choice>a</Choice>
<Choice>b</Choice>
<Choice>c</Choice>
<Choice>d</Choice>
</Object>
</Root>
问题1
A.
A.
B
C
D
代码直到运行时才显示任何错误,然后在代码运行时我得到一个强制转换错误。
无法将类型为“d\u 11”的对象强制转换为类型为“System.Collections.Generic.List`1[System.String]”
非常感谢您的帮助。您不能将
d.Elements(“选择”)
转换为列表
用这个
Choices = d.Elements("Choice").Select(x=>(string)x).ToList()
而不是
(List<string>)d.Elements("Choice")
(列表)d.元素(“选择”)
您不能将d.Elements(“选择”)
强制转换为列表
用这个
Choices = d.Elements("Choice").Select(x=>(string)x).ToList()
而不是
(List<string>)d.Elements("Choice")
(列表)d.元素(“选择”)
您不能将d.Elements(“选择”)
强制转换为列表
用这个
Choices = d.Elements("Choice").Select(x=>(string)x).ToList()
而不是
(List<string>)d.Elements("Choice")
(列表)d.元素(“选择”)
您不能将d.Elements(“选择”)
强制转换为列表
用这个
Choices = d.Elements("Choice").Select(x=>(string)x).ToList()
而不是
(List<string>)d.Elements("Choice")
(列表)d.元素(“选择”)
你说的“不起作用”是什么意思?不起作用的内容我在运行时遇到强制转换错误。无法将类型为“d\u 11”的对象强制转换为类型为“System.Collections.Generic.List`1[System.String]”。返回IEnumerable
,所以您只需要像d.Elements(“选择”).Select(i=>i.Value).ToList()这样的东西就可以了!谢谢,你说的“不行”是什么意思?不起作用的内容我在运行时遇到强制转换错误。无法将类型为“d\u 11”的对象强制转换为类型为“System.Collections.Generic.List`1[System.String]”。返回IEnumerable
,所以您只需要像d.Elements(“选择”).Select(i=>i.Value).ToList()这样的东西就可以了!谢谢,你说的“不行”是什么意思?不起作用的内容我在运行时遇到强制转换错误。无法将类型为“d\u 11”的对象强制转换为类型为“System.Collections.Generic.List`1[System.String]”。返回IEnumerable
,所以您只需要像d.Elements(“选择”).Select(i=>i.Value).ToList()这样的东西就可以了!谢谢,你说的“不行”是什么意思?不起作用的内容我在运行时遇到强制转换错误。无法将类型为“d\u 11”的对象强制转换为类型为“System.Collections.Generic.List`1[System.String]”。返回IEnumerable
,所以您只需要像d.Elements(“选择”).Select(i=>i.Value).ToList()这样的东西就可以了!谢谢你。你的很接近,但我还是得到了一个不同的错误。正确的代码是“Grundy的”,谢谢。它说非静态字段方法或属性需要对象引用。@您的问题(以及我的回答)中没有可能导致这种编译错误的代码。这将不是您在编程生活中第一次遇到这种编译错误。学习如何调试/修复代码如何?顺便说一句:我真的很好奇,格伦迪的代码可以工作,但失败了。如果可以复制的话,就发布它。这实际上是一个预编译错误。我试图修改您的代码以使其正常工作,但无法清除错误。我再次尝试了该代码,即使在尝试构建之后,它仍然会给出相同的错误。虽然我还是一个相当新手的程序员,但在来到这里之前,我确实尝试过调试/修复我的代码,然而,在没有寻求帮助的情况下,我可以从书籍和网站上学到的东西只有这么多。你的很接近,但我还是遇到了一个不同的错误。正确的代码是“Grundy的”,谢谢。它说非静态字段方法或属性需要对象引用。@您的问题(以及我的回答)中没有可能导致这种编译错误的代码。这将不是您在编程生活中第一次遇到这种编译错误。学习如何调试/修复代码如何?顺便说一句:我真的很好奇,格伦迪的代码可以工作,但失败了。如果可以复制的话,就发布它。这实际上是一个预编译错误。我试图修改您的代码以使其正常工作,但无法清除错误。我再次尝试了该代码,即使在尝试构建之后,它仍然会给出相同的错误。虽然我还是一个相当新手的程序员,但在来到这里之前,我确实尝试过调试/修复我的代码,然而,在没有寻求帮助的情况下,我可以从书籍和网站上学到的东西只有这么多。你的很接近,但我还是遇到了一个不同的错误。正确的代码是“Grundy的”,谢谢。它说非静态字段方法或属性需要对象引用。@您的问题(以及我的回答)中没有可能导致这种编译错误的代码。这将不是您在编程生活中第一次遇到这种编译错误。学习如何调试/修复代码如何?顺便说一句:我真的很好奇,格伦迪的代码可以工作,但失败了。如果可以复制的话,就发布它。这实际上是一个预编译错误。我试着修改你的代码以得到它