【发布时间】:2013-02-27 03:04:59
【问题描述】:
我正在使用以下扩展方法 (from an existing StackOverflow question) 将现有的可枚举拆分为两个:
public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> list, int parts)
{
int i = 0;
var splits = from item in list
group item by i++ % parts into part
select part.AsEnumerable();
return splits;
}
我正在使用这样的方法:
//accountIds is simply an IEnumerable<string>
var foo = accountIds.Split(2).ToList();
当我运行我的应用程序时,该方法似乎运行良好。但是,当我调试我的应用程序时,这行代码总是会引发异常:
Object reference not set to an instance of an object.
我很困惑为什么这个方法只在我调试的时候抛出异常。
【问题讨论】:
-
在查询中改变变量是最糟糕的做法。首先不要这样做。为什么它会崩溃我不知道,但有更好的方法来拆分序列。
-
你看你的
foo里面有没有元素? -
@FreddieFabregas - 如果我删除
.ToList()调用,我会避免异常,我会返回两个可枚举,每个都有 ~1300 个元素。 -
您是否尝试过缩小问题范围并将其与当前项目隔离开来?我创建了同样的东西,没有任何问题,但我不知道 accountIds 到底长什么样,所以我只能猜测。
-
@Corylulu - 是的。我应该更具体一些,但是,
accountIds只不过是一个字符串列表。我的真实项目示例非常简单。
标签: c# exception extension-methods