簡體   English   中英

如何獲取隨機AZ字母數組?

[英]How to get array of random A-Z letters?

讓我解釋一下我的意思:我有一個包含4列的數據庫,其中一列是Letter,所以每行都有一個從'A'到'Z'的字符,這些不是唯一的,所以有多行包含'A',多行'B'等

我想要做的是獲得包含所有字母的26(az)行,但隨機化具有相同字母的行。 所以我想要從A到Z的26行,只有一行A,一行B ......,這些字母的行是隨機的。 我希望你們能理解我的意思。 提前致謝!

我想的是:

var randomQuestions = questions.Distinct().GroupBy(q => q.Letter).Take(26).ToArray();

但我真的不知道。

如果我正確理解了這個問題,那么這樣的事情應該有效:

Random random = new Random();

var randomQuestions = questions
    .GroupBy(q => q.Letter)
    .SelectMany(g => g.Skip(random.Next(g.Count())).Take(1));

原始努力中的Distinct()充其量只是無用的,最壞的情況是適得其反。

以上簡單地按字母對數據進行分組,然后從每個組中選擇一個隨機的單個元素。 如果原始數據中有26個不同的字母,則上面將為每個不同的字母選擇一個隨機數據行。 你將在最終結果中獲得二十六個元素。

我會建議彼得的優秀答案略有不同。

試試這個:

Random random = new Random();

var randomQuestions =
    from q in questions
    orderby random.Next()
    group q by q.Letter into gqs
    from gq in gqs.Take(1)
    select gq;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM