C# 从XML随机分配给类属性

C# 从XML随机分配给类属性,c#,C#,我有一个XML文件,我正在从中解析一些要显示在列表中的内容: 类别: 公共类SampleClass { 公共字符串样本{get;set;} 公共字符串限定{get;set;} 公共字符串随机{get;set;} } XML文件示例: 这是示例1 答复1 这是示例2 答复2 ... 目前,我正在轻松解析列表中的内容并制作此列表 \u list=xmlDoc.substands(“问题”) .选择( q=>新的SampleClass { 样本=q元素(“样本”)值, 确定=q元素(“确定”)

我有一个XML文件,我正在从中解析一些要显示在列表中的内容:

类别:
公共类SampleClass
{
公共字符串样本{get;set;}
公共字符串限定{get;set;}
公共字符串随机{get;set;}
}
XML文件示例:

这是示例1
答复1
这是示例2
答复2
...
目前,我正在轻松解析列表中的内容并制作此列表

\u list=xmlDoc.substands(“问题”)
.选择(
q=>新的SampleClass
{ 
样本=q元素(“样本”)值,
确定=q元素(“确定”)值
})
.ToList();
但是,在列表中,我希望包含另一个元素,该元素将以随机顺序从XML文件中解析,例如:

SampleClass list   Sample        Definite   Random 
                      ^              ^        ^ 
List element 1: This is sample 1, Answer 1, Answer5
List element 2: This is sample 2, Answer 2, Answer1
List element 3: This is sample 3, Answer 3, Answer4 ...
我想问一下,在解析时如何将这个
Random
元素包括在列表中,以便
q.Random
Question
节点分配一个随机


列表中的随机项重复项是不可接受的。

这应该是您要查找的:

var rnd = new Random(); //make this a static field, if needed
var questions = xmlDoc.Descendants("Question").ToList();
_list = _questions.Select(q => new SampleClass
{
    Sample = q.Element("Sample").Value,
    Definite = q.Element("Definite").Value,
    Random = questions[rnd.Next(questions.Count)].Element("Definite").Value
}).ToList();
(来自)


请注意,这将允许重复的随机答案,例如答案1可能是2和3的随机答案,并且不会阻止答案本身成为随机答案。如果这些是问题,您需要使用不同的解决方案(可能是其变体)。

这应该是您需要的:

var rnd = new Random(); //make this a static field, if needed
var questions = xmlDoc.Descendants("Question").ToList();
_list = _questions.Select(q => new SampleClass
{
    Sample = q.Element("Sample").Value,
    Definite = q.Element("Definite").Value,
    Random = questions[rnd.Next(questions.Count)].Element("Definite").Value
}).ToList();
(来自)


请注意,这将允许重复的随机答案,例如答案1可能是2和3的随机答案,并且不会阻止答案本身成为随机答案。如果这些是问题,您需要使用不同的解决方案(可能是其变体)。

分两次完成。第一个过程可以与您已有的过程相同。第二次通过将为列表中的每个项目分配一个随机答案

这是我脑子里想不到的,所以请原谅任何错误,但它看起来会如下所示:

IList<string> randomAnswers = _list
    .Select(c => c.Definite)
    .OrderBy(c => Guid.NewGuid())
    .ToList();

for (int index = 0; index < randomAnswers.Length; index++)
{
    _list[index].Random = randomAnswers[index];
}
IList randomAnswers=\u列表
.选择(c=>c.Definite)
.OrderBy(c=>Guid.NewGuid())
.ToList();
for(int index=0;index
分两次完成。第一个过程可以与您已有的过程相同。第二次通过将为列表中的每个项目分配一个随机答案

这是我脑子里想不到的,所以请原谅任何错误,但它看起来会如下所示:

IList<string> randomAnswers = _list
    .Select(c => c.Definite)
    .OrderBy(c => Guid.NewGuid())
    .ToList();

for (int index = 0; index < randomAnswers.Length; index++)
{
    _list[index].Random = randomAnswers[index];
}
IList randomAnswers=\u列表
.选择(c=>c.Definite)
.OrderBy(c=>Guid.NewGuid())
.ToList();
for(int index=0;index
这将生成一个不重复的随机答案列表。这可能是也可能不是OP想要的。这意味着每个项目不是独立随机的,因为例如,如果有5个答案,前4个在随机点中有2-5个,你可以猜测最后一个是1。这将生成一个不重复的随机答案列表。这可能是也可能不是OP想要的。这意味着每个项目不是独立随机的,因为例如,如果有5个答案,前4个在随机点中有2-5个,你可以猜测最后一个是1。这不允许重复的“随机”答案吗?是的,它会。询问者从未指明他是否想要这个。我会注意到。@Tim S。在这种方法中,列表元素中有重复的
Random
元素。这是个问题吗?你在你的问题中没有这样说-如果你编辑你的问题来解决我在回答中提到的两件事,那将是一件好事:复制品是否可以接受,自我引用是否可以接受。否则我们就在黑暗中拍摄来回答你。这不允许重复的“随机”答案吗?是的,会的。询问者从未指明他是否想要这个。我会注意到。@Tim S。在这种方法中,列表元素中有重复的
Random
元素。这是个问题吗?你在你的问题中没有这样说-如果你编辑你的问题来解决我在回答中提到的两件事,那将是一件好事:复制品是否可以接受,自我引用是否可以接受。否则我们就在黑暗中开枪试图回答你。