1

リストに表示するコンテンツを解析している XML ファイルがあります。

クラス:

public class SampleClass 
{
    public string Sample {get; set;}    
    public string Definite {get; set;}
    public string Random {get; set;}
}

XML ファイルのサンプル:

<Question>
    <Sample>This is sample 1</Sample>
    <Definite>Answer 1</Definite>
</Question>

<Question>
    <Sample>This is sample 2</Sample>
    <Definite>Answer 2</Definite>
</Question>
...

現在、リストからコンテンツを簡単に解析して、このリストを作成しています。

_list = xmlDoc.Descendants("Question")
              .Select(
                  q => new SampleClass 
                  { 
                      Sample = q.Element("Sample").Value, 
                      Definite = q.Element("Definite").Value
                  })
              .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<Definite> Value </Definite>Question

リスト内のランダムの重複は受け入れられません。

4

2 に答える 2

1

2パスで行います。最初のパスは、すでに持っているものと同じにすることができます。2 番目のパスでは、リスト内の各項目にランダムな回答が割り当てられます。

これは私の頭の上から外れているので、バグを許してください。ただし、次のようになります。

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];
}
于 2012-07-02T20:14:38.140 に答える
0

これはあなたが探しているものでなければなりません:

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();

(リスト内の Access random itemから)

これにより、ランダムな回答の重複が許可されることに注意してください。たとえば、回答 1 が 2 と 3 のランダムになる可能性があり、回答自体がランダムになることを妨げません。これらが問題である場合は、別の解決策 (おそらくこれのバリエーション) を使用する必要があります。

于 2012-07-02T20:14:03.917 に答える