1

オブジェクトを含むリストを作成する必要があります。また、オブジェクトはランダムな順序である必要があります。ここで私は彼らに乱数を与えます:

Random tal = new Random();
list1[i].nummer = tal.Next(list1.Count);
listGold.Add(list1[i]);

そして今、私はそれらを番号で注文する必要があります。linqが私のためにできると私は思った。しかし、それはできません:S

私はこれを試しています:

RepeaterSponsorGold.DataSource = listGold.OrderBy(n => n.nummer);
RepeaterSponsorGold.DataBind();

私のリストを数字で並べ替えて、リストを私のリパターに入れます。しかし、lsitはソートされていないようです...または乱数を取得していないようです。どちらかわかりません。誰かが私が間違っていることを見ることができますか?

4

5 に答える 5

3

試す

RepeaterSponsorGold.DataSource = listGold.OrderBy(n => n.nummer).ToList();
于 2012-05-21T13:33:53.757 に答える
2

ランダムな順序で並べ替える必要がある場合は、次のことを試すことができます。

var listGold = list1.OrderBy(n => Guid.NewGuid());

を使用する必要はありませんRandom

于 2012-05-21T13:36:01.150 に答える
2

Random()を使用してリストをシャッフルしないでください。これは、決定論的な分布を生成する可能性があるためです。

代わりに、スフレを使用してください。

リストをランダム化する<T>

public static void Shuffle<T>(this IList<T> list)  
{  
    Random rng = new Random();  
    int n = list.Count;  
    while (n > 1) {  
        n--;  
        int k = rng.Next(n + 1);  
        T value = list[k];  
        list[k] = list[n];  
        list[n] = value;  
    }  
}

....

listGold.Shuffle();
于 2012-05-21T13:38:07.417 に答える
0

これはどう:

List<string> list = new List<string>()
                        {
                            "Blue",
                            "Brown",
                            "Beige",
                            "Red",
                            "Black"
                        };
Random random = new Random();
var orderedList = list.Select(c => new {Item = c, Order = random.Next()})
    .OrderBy(i=>i.Item)
    .Select(x=>x.Item).ToList();

orderedList.ForEach(x=>Console.WriteLine(x));
于 2012-05-21T13:38:51.937 に答える
0

いくつかの問題があります。

最も重要なのは、毎回新しいインスタンスを呼び出すのではなく、ランダムのインスタンスを1つだけ持ち、それを繰り返し使用する必要があるということです。

次に、リストカウントをシードとして使用することにより、大まかにシーケンシャルなリストを取得できます。

list1[i].nummer = tal.Next(list1.Count);

list.Countをシードとして使用しているため、追加された順序とほぼ同じリストが表示されます。

代わりに試してください:

Enumerable.Range(0,100)
    .ToDictionary(k=> Guid.NewGuid())
    .OrderBy(o => o.Key).Select(s => s.Value).ToList()

GUIDを使用すると、ランダムよりも自然なランダム化が得られます。

于 2012-05-21T13:41:40.360 に答える