相关疑难解决方法(0)

使用LINQ将列表拆分为子列表

有没有什么方法可以将项目索引作为每个拆分的分隔符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]

我还需要将结果列表大小作为此函数的参数.

c# linq data-structures

361
推荐指数
18
解决办法
19万
查看次数

LINQ分区列表包含8个成员的列表

如何获取List(使用LINQ)并将其分解为每隔8个条目分区原始列表的列表列表?

我想像这样的东西会涉及Skip和/或Take,但我仍然是LINQ的新手.

编辑:使用C#/ .Net 3.5

编辑2:这个问题的措辞不同于其他"重复"问题.虽然问题是相似的,但这个问题的答案是优越的:"接受"的答案都非常可靠(包括yield声明)以及Jon Skeet建议使用MoreLinq(在"其他"问题中不推荐使用).有时复制是好的,因为它们迫使重新检查问题.

linq partitioning skip take

41
推荐指数
4
解决办法
2万
查看次数

如何将IEnumerable <String>拆分为IEnumerable <string>组

我有一个IEnumerable<string>我想分成三组,所以如果我的输入有6个项目,我会得到一个IEnumerable<IEnumerable<string>>返回的两个项目,每个项目将包含IEnumerable<string>我的字符串内容.

我正在寻找如何使用Linq而不是简单的for循环

谢谢

c# linq

30
推荐指数
4
解决办法
2万
查看次数

将一个大的IEnumerable划分为一个固定数量的项目的较小IEnumerable

为了支持仅接受特定数量的项目(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,但我无法弄清楚如何写它.

c# linq

7
推荐指数
2
解决办法
7496
查看次数

使用C#中的LINQ从名称值列表中获取4个元素的组

我想循环遍历这个名称值对列表,并以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.

c# linq

5
推荐指数
2
解决办法
1980
查看次数

字符串按每3个字分割

我有一个问题.我需要像这样拆分我的每一个字符串:例如:"没有限制的经济驱动"

我需要带有子字符串的数组:"经济驱动没有""驱动没有限制"

现在我有这个:

            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)

c# string split

3
推荐指数
1
解决办法
1207
查看次数

标签 统计

c# ×5

linq ×5

data-structures ×1

partitioning ×1

skip ×1

split ×1

string ×1

take ×1