【发布时间】:2019-01-20 08:23:11
【问题描述】:
我要解决的问题如下:
我有一个List<string>,我们称之为“initialList”。
我需要与该列表中的所有字符串进行交互,所以我必须枚举它。但是,问题来了,我每次交互时都必须取其中的“x”个元素。
x 是 new Random().Next(_minValue, _maxValue);,所以每次都是随机的。
这是我想做的一个真实例子:
假设列表initialList 包含以下元素:
test, test2, test3, test4, test5, test6, test7, test8, test9, test10, test11, test12.
我想遍历所有元素,一次取 2-3 个字符串,然后保存一个包含组合字符串的新字符串。
因此,一种可能的输出(因 Random 返回的值而异)是:
{ "test", "test1", "test2" },
{ "test3", "test4" },
{ "test5", "test6" },
{ "test7", "test8" },
{ "test9", "test10", "test11" },
{ "test12" }
我想做什么:
for (var i = 0; i < _users.Count; i += _random.Next(_minMentions, _maxMentions + 1))
{
var mergedString = ?? // get the values of the next _random.Next(_minMentions, _maxMentions + 1) strings
}
我在想,但是如果我在循环之外生成随机数,那么它总是一样的。我希望字符串的数量每次都是随机的。
另外,考虑通过选择具有索引的元素来执行 LINQ,但不知道如何从那里着手。
感谢您的帮助。
【问题讨论】:
-
如果在所有随机抽取后最后只剩下一个元素会怎样?这不符合每组 2-3 个元素的要求。
-
@itsme86 在他提供的示例中,最后一个元素(单独的)是...单独的。
-
“我想遍历所有元素,一次取 2-3 个字符串,并保存一个包含组合字符串的新字符串”——据我所知,结果应该只是一个字符串列表?
-
@VadzimDvorak 这没什么大不了的,因为我稍后会根据我的需要调整它。但我喜欢您的解决方案,它与其他答案有些相似,但很独特。谢谢你的帮助! :)