11

假设我有一个对象列表 TheListOfObjects。

如果我写这个:

TheListOfObjects = TheListOfObjects.Take(40).ToList();

如果列表中只有 30 个项目,它会崩溃还是只返回前 30 个?当 TheListOfObjects 为空,甚至为空时?

谢谢。

4

4 回答 4

28

这是您应该尝试或至少检查文档的地方之一。

如果列表中只有 30 个项目,它会崩溃还是只返回前 30 个?

它只会返回前 30 个。

当 TheListOfObjects 为空时

它将返回空序列。

甚至为空?

这将导致一个ArgumentNullException.

来自 MSDN:

Take<TSource>枚举 source 并产生元素,直到产生 count 个元素或 source 不再包含元素。

如果count小于或等于零,source则不枚举并IEnumerable<TSource>返回空。

在例外情况下:

Exception             Condition
ArgumentNullException source is null

在您登录 StackOverflow 的时间里,您可以检查 MSDN 并获得权威答案(请注意,一些稍微不正确或部分不完整的答案已在此处发布和删除)或启动 Visual Studio 并润滑您的轮子一点点。

于 2012-04-09T13:40:59.753 回答
3

MSDN 说:

Take(Of TSource) 枚举 source 并产生元素,直到产生 count 个元素或 source 不再包含元素。

于 2012-04-09T13:40:42.327 回答
2

来自msdn

Take<T> 枚举 source 并产生元素,直到产生 count 个元素或 source 不再包含元素。

如果 count 小于或等于 0,则不枚举 source 并IEnumerable<T>返回空值。

于 2012-04-09T13:41:12.883 回答
2

试试这个

TheListOfObjects = TheListOfObjects.Take(TheListOfObjects.Count > 30 ? 30 : TheListOfObjects.Count).ToList();
于 2015-11-17T16:20:33.337 回答