相关疑难解决方法(0)

372
推荐指数
7
解决办法
21万
查看次数

使用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万
查看次数

将IEnumerable <T>拆分为固定大小的块(返回IEnumerable <IEnumerable <T >>,其中内部序列具有固定长度)

我想把IEnumerable<T>它分成固定大小的块.

我有这个,但由于所有列表创建/复制,它似乎不优雅:

private static IEnumerable<IEnumerable<T>> Partition<T>(this IEnumerable<T> items, int partitionSize)
{
    List<T> partition = new List<T>(partitionSize);
    foreach (T item in items)
    {
        partition.Add(item);
        if (partition.Count == partitionSize)
        {
            yield return partition;
            partition = new List<T>(partitionSize);
        }
    }
    // Cope with items.Count % partitionSize != 0
    if (partition.Count > 0) yield return partition;
}
Run Code Online (Sandbox Code Playgroud)

有没有更惯用的东西?

编辑:虽然这已被标记为Divide数组的副本到子序列数组的数组,但它不是 - 该问题涉及拆分数组,而这是关于IEnumerable<T>.此外,该问题要求填充最后一个子序列.这两个问题密切相关,但并不相同.

c# linq ienumerable

44
推荐指数
5
解决办法
3万
查看次数

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

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

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

编辑:使用C#/ .Net 3.5

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

linq partitioning skip take

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

C#拆分数组

我需要在中点将一个不确定大小的数组拆分成两个独立的数组.

使用ToArray()从字符串列表生成数组.

        public void AddToList ()
        {
            bool loop = true;
            string a = "";

            Console.WriteLine("Enter a string value and press enter to add it to the list");
            while (loop == true)
            {
                a = Console.ReadLine();

                if (a != "")
                {
                    mylist.Add(a);
                }
                else
                {
                    loop = false;
                }
            }

        }

        public void ReturnList()
        {
            string x = "";
            foreach (string number in mylist)
            {
                x = x + number + " ";
            }
            Console.WriteLine(x);
            Console.ReadLine();
        }

    }

    class SplitList …
Run Code Online (Sandbox Code Playgroud)

c# arrays

22
推荐指数
4
解决办法
7万
查看次数

C#:将字符串数组分成N个实例的最简洁方法N个项目长

我知道如何以丑陋的方式做到这一点,但我想知道是否有更优雅和简洁的方法.

我有一个字符串数组的电子邮件地址.假设字符串数组具有任意长度 - 它可能有几个项目,或者它可能有很多项目.我想构建另一个字符串,包括来自字符串数组的50个电子邮件地址,直到数组的末尾,并在每个50之后使用Send()方法中的50个地址的字符串调用发送操作.

更普遍的问题是做这种事情的最干净/最清晰的方法是什么.我有一个解决方案,这是我的VBScript学习的遗产,但我认为在C#中有更好的方法.

c# arrays string loops

21
推荐指数
2
解决办法
1万
查看次数

使用循环处理列表,每次获取100个元素,并在列表末尾自动少于100个元素

有没有办法使用一个循环,它取一个大列表中的前100项,与它们做一些事情,然后下一个100等,但当它接近结束时,它会自动缩短"100"步骤到剩余的项目.

目前我必须使用两个if循环:

for (int i = 0; i < listLength; i = i + 100)
{
    if (i + 100 < listLength)
    {
        //Does its thing with a bigList.GetRange(i, 100)
    }
    else
    {
        //Does the same thing with bigList.GetRange(i, listLength - i)
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?如果不是,我将至少使"事物"成为一个函数,因此代码不必被复制两次.

c# loops list range

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

用于IEnumerable的C#实现的F#Seq模块?

F#有一堆标准的序列操作符,我已经了解并喜欢我对Mathematica的体验.F#现在得到了很多关注,当它一般发布时,我打算经常使用它.

现在,由于F#尚未普遍发布,我无法在生产代码中真正使用它.LINQ使用类似SQL的名称来实现其中一些运算符(例如'select'是'map','where'是'filter'),但是我找不到'fold','iter'或'partition'的实现.

有没有人见过标准序列运算符的任何C#实现?这是某人应该写的东西吗?

c# f#

11
推荐指数
2
解决办法
5345
查看次数

将列表拆分为C#中的多个列表

我有一个字符串列表,我发送到队列.我需要拆分列表,以便最终得到一个列表列表,其中每个列表包含最大(用户定义)字符串数.因此,例如,如果我有一个列表,其中包含以下A,B,C,D,E,F,G,H,I和列表的最大大小为4,我想最终得到一个列表列表第一个列表项包含:A,B,C,D,第二个列表有:E,F,G,H,最后一个列表项只包含:I.我查看了"TakeWhile"函数,但不确定是否这是最好的方法.对此有何解决方案?

list c#-4.0

9
推荐指数
2
解决办法
3万
查看次数

如何在C#中分区或拆分DataTable?

我想拆分DataTable,以便我可以将其块从一个地方上传到另一个地方.

例如

先挑100行.
接下来的100行.
挑选下一行100行等等......

有没有办法像数据库中的光标一样做?我不喜欢使用循环等来计算行数.

c# sql datatable

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