gpt4 book ai didi

c# - 如何通过Linq中的属性获取元素的值

转载 作者:行者123 更新时间:2023-11-30 22:14:10 25 4
gpt4 key购买 nike

我是 Linq 的新手,所以对于非常基本的问题深表歉意。

我有以下类型的 XML

<QuestionSet type="MCQ">
<Question>

What will the output of following

// main()
// {
// int x = 10, y = 15;
// x = x++;
// y = ++y;
// printf("%d, %d", x, y);
// }
</Question>"

<Options>
<Option number="1">10, 15</Option>
<Option number="2">10, 16</Option>
<Option number="3">11, 15</Option>
<Option number="4">11, 16</Option>
</Options>
</QuestionSet>

我想通过属性 1、2、3 和 4 获取选项值。

最佳答案

var questions = from qs in xdoc.Descendants("QuestionSet")
let options = qs.Element("Options").Elements()
select new {
Question = (string)qs.Element("Question"),
Options = options.ToDictionary(o => (int)o.Attribute("number"),
o => (string)o)
};

这将为集合中的每个问题返回匿名对象的集合。所有选项都将在以数字为键的字典中:

foreach (var question in questions)
{
Console.WriteLine(question.Question);

foreach (var option in question.Options)
Console.WriteLine("{0}: {1}", option.Key, option.Value);

// or ConsoleWriteLine(question.Options[2])
}

如果您只想从这个特定的 xml 中获取选项:

var options = xdoc.Descendants("Option")
.ToDictionary(o => (int)o.Attribute("number"), o => (string)o);

Console.WriteLine(options[1]); // 10, 15

关于c# - 如何通过Linq中的属性获取元素的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18629793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com