相关疑难解决方法(0)

将列表拆分为N个较小的N列表

我试图将列表拆分成一系列较小的列表.

我的问题:我拆分列表的功能不会将它们拆分成正确大小的列表.它应该将它们分成大小为30的列表,而是将它们分成大小为114的列表?

如何使我的功能将列表拆分为X个大小为30或更小的列表?

public static List<List<float[]>> splitList(List <float[]> locations, int nSize=30) 
{       
    List<List<float[]>> list = new List<List<float[]>>();

    for (int i=(int)(Math.Ceiling((decimal)(locations.Count/nSize))); i>=0; i--) {
        List <float[]> subLocat = new List <float[]>(locations); 

        if (subLocat.Count >= ((i*nSize)+nSize))
            subLocat.RemoveRange(i*nSize, nSize);
        else subLocat.RemoveRange(i*nSize, subLocat.Count-(i*nSize));

        Debug.Log ("Index: "+i.ToString()+", Size: "+subLocat.Count.ToString());
        list.Add (subLocat);
    }

    return list;
}
Run Code Online (Sandbox Code Playgroud)

如果我在144的列表上使用该函数,那么输出是:

指数:4,大小:120
指数:3,大小:114
索引:2,大小:114
索引:1,大小:114
索引:0,大小:114

c# split list

179
推荐指数
11
解决办法
17万
查看次数

使用LINQ将集合拆分为`n`部分?

有没有一种很好的方法可以n使用LINQ 将集合拆分为多个部分?当然不一定均匀.

也就是说,我想将集合划分为子集合,每个子集合包含元素的子集,其中最后一个集合可以是不规则的.

.net c# linq data-structures

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

在linq中创建批次

有人可以建议在linq中创建一定大小的批次吗?

理想情况下,我希望能够以一些可配置的数量块执行操作.

c# linq

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

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

Linq每次迭代选择5项

Linq每次根据我们的枚举器选择5项

我们的列表例如"theList"100个项目,想要浏览列表并在每次迭代中选择5个项目,

示例代码,我们希望将其更改为我们期望的结果:

        theList = dt.AsEnumerable()
            .Select(row => new CustItem
            {
                Name = row.Field<string>("tName"),
                Title = row.Field<string>("tTitle"),
            }).ToList();
Run Code Online (Sandbox Code Playgroud)

我们应该在一个循环中迭代它并且每次处理所选择的5个项目,或者将它传递给我们的其他方法:

类似的东西:

for (int i=0; i < 20 ; i++)
Run Code Online (Sandbox Code Playgroud)

我想"i"linq select语句中使用枚举器,并使多重性成为我们新结果集的边界.

c# linq

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

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

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

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

谢谢

c# linq

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

拆分阵列的最佳方法

下午,我需要找出将阵列拆分成较小"块"的最佳方法.

我正在传递大约1200个项目,并且需要将这些项目拆分为更容易处理的100个组,然后我需要将它们传递给处理.

有人可以提出一些建议吗?

c# arrays split

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

使用linq将列表<t>分解为n个长度的列表<t>?

可能重复:
如何将IEnumerable <String>拆分为IEnumerable <string>组

我有一个列表,我想分成10组.

如果我有一个对象

List<Person> allPendingPersons 
Run Code Online (Sandbox Code Playgroud)

长度为m.

在LINQ中是否有一种优雅的方法可以将allPendingPersons分解为一个或多个List对象,这些对象都有最多10个人?

.net linq

21
推荐指数
3
解决办法
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万
查看次数

标签 统计

c# ×8

linq ×7

.net ×2

list ×2

split ×2

arrays ×1

data-structures ×1

ienumerable ×1

loops ×1

partitioning ×1

range ×1

skip ×1

take ×1