让我解释一下我的意思:我有一个包含4列的数据库,其中一列是Letter,所以每行都有一个从'A'到'Z'的字符,这些不是唯一的,所以有多行包含'A',多行'B'等
我想要做的是获得包含所有字母的26(az)行,但随机化具有相同字母的行.所以我想要从A到Z的26行,只有一行A,一行B ......,这些字母的行是随机的.我希望你们能理解我的意思.提前致谢!
我想的是:
var randomQuestions = questions.Distinct().GroupBy(q => q.Letter).Take(26).ToArray();
Run Code Online (Sandbox Code Playgroud)
但我真的不知道.
如果我正确理解了这个问题,那么这样的事情应该有效:
Random random = new Random();
var randomQuestions = questions
.GroupBy(q => q.Letter)
.SelectMany(g => g.Skip(random.Next(g.Count())).Take(1));
Run Code Online (Sandbox Code Playgroud)
将Distinct()
在原来的努力也没用在最好的,适得其反在最坏的情况.
以上简单地按字母对数据进行分组,然后从每个组中选择一个随机的单个元素.如果原始数据中有26个不同的字母,则上面将为每个不同的字母选择一个随机数据行.你将在最终结果中获得二十六个元素.