首页 > 解决方案 > 如何将字符串列表拆分为更小的字符串列表块

问题描述

我试图解决的问题如下:

我有一个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,但不知道如何从那里开始。

任何帮助表示赞赏,谢谢。

标签: c#stringlistlinqloops

解决方案


希望这会给你一个想法。

var mergedList = new List<string>();
for(int i = 0; i < initialList.Count; ){
    var n = _random.Next(2,4);
    mergedList.Add(initialList.Skip(i).Take(n).Aggregate((x,y) => x + y));
    i += n;
}

推荐阅读