有没有什么方法可以将项目索引作为每个拆分的分隔符List<SomeObject>分成几个单独的列表SomeObject?
让我举例说明:
我有一个List<SomeObject>,我需要一个List<List<SomeObject>>或List<SomeObject>[],所以这些结果列表中的每一个将包含一组3个原始列表项(顺序).
例如.:
原始清单: [a, g, e, w, p, s, q, f, x, y, i, m, c]
结果列表: [a, g, e], [w, p, s], [q, f, x], [y, i, m], [c]
我还需要将结果列表大小作为此函数的参数.
如何获取List(使用LINQ)并将其分解为每隔8个条目分区原始列表的列表列表?
我想像这样的东西会涉及Skip和/或Take,但我仍然是LINQ的新手.
编辑:使用C#/ .Net 3.5
编辑2:这个问题的措辞不同于其他"重复"问题.虽然问题是相似的,但这个问题的答案是优越的:"接受"的答案都非常可靠(包括yield声明)以及Jon Skeet建议使用MoreLinq(在"其他"问题中不推荐使用).有时复制是好的,因为它们迫使重新检查问题.
我有一个IEnumerable<string>我想分成三组,所以如果我的输入有6个项目,我会得到一个IEnumerable<IEnumerable<string>>返回的两个项目,每个项目将包含IEnumerable<string>我的字符串内容.
我正在寻找如何使用Linq而不是简单的for循环
谢谢
为了支持仅接受特定数量的项目(5项)的API,我想将LINQ结果转换为总是包含该设定数量项目的较小项目组.
假设清单 {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18}
我想得到三个较小的列表,每个最多包含5个项目
{1, 2, 3, 4, 5}
{6, 7, 8, 9, 10}
{11, 12, 13, 14, 15}
{16, 17, 18}
我怎么能用LINQ做到这一点?我假设它涉及Group或者Aggregate,但我无法弄清楚如何写它.
我想循环遍历这个名称值对列表,并以4组为单位抓取它们.
数据如下:
value1 1
value2 1
value3 1
value4 1
value1 2
value2 2
value3 2
value4 2
Run Code Online (Sandbox Code Playgroud)
它会将其分组为包含的1个列表
value1 1
value2 1
value3 1
value4 1
Run Code Online (Sandbox Code Playgroud)
和另一个包含的列表
value1 2
value2 2
value3 2
value4 2
Run Code Online (Sandbox Code Playgroud)
我知道这可以通过for循环轻松完成,但我想知道是否有一个很好的方法来使用LINQ.
我有一个问题.我需要像这样拆分我的每一个字符串:例如:"没有限制的经济驱动"
我需要带有子字符串的数组:"经济驱动没有""驱动没有限制"
现在我有这个:
List<string> myStrings = new List<string>();
foreach(var text in INPUT_TEXT) //here is Economic drive without restrictions
{
myStrings.DefaultIfEmpty();
var textSplitted = text.Split(new char[] { ' ' });
int j = 0;
foreach(var textSplit in textSplitted)
{
int i = 0 + j;
string threeWords = "";
while(i != 3 + j)
{
if (i >= textSplitted.Count()) break;
threeWords = threeWords + " " + textSplitted[i];
i++;
}
myStrings.Add(threeWords);
j++;
}
}
Run Code Online (Sandbox Code Playgroud)