比方说,我有一个对象列表TheListOfObjects。当收集计数小于参数时采取(参数)
如果我这样写:
TheListOfObjects = TheListOfObjects.Take(40).ToList();
它会不会崩溃,如果在列表中只有30个项目还是会只返回前30?并且当TheListOfObjects是空的,甚至空?
谢谢。
比方说,我有一个对象列表TheListOfObjects。当收集计数小于参数时采取(参数)
如果我这样写:
TheListOfObjects = TheListOfObjects.Take(40).ToList();
它会不会崩溃,如果在列表中只有30个项目还是会只返回前30?并且当TheListOfObjects是空的,甚至空?
谢谢。
这是那些你应该只是尝试,或至少检查documentation之一。
如果列表中只有30个项目,或者它只是返回前30个项目,它会崩溃吗?
它只是将返回第30
当TheListOfObjects是空
它将返回空序列。
甚至为空?
这将导致ArgumentNullException
。
从MSDN:
Take<TSource>
枚举源并产生元素,直到计数元件已经产生或源不包含更多的元素。如果
count
小于或等于零,则source
未被枚举且返回空的IEnumerable<TSource>
。
而下的例外:
Exception Condition
ArgumentNullException source is null
在你花了登录到StackOverflow上的时候,你可能会要么检查MSDN和有一个权威解答(请注意,某些轻度不正确或部分不完整的答案已经在这里发布和删除)或者启动Visual Studio并且润滑一下你的轮子。
所以你说,但文档有时会忽略这些信息,所以感觉像是浪费当我可以在StackOverflow上搜索并找到答案时,可以尝试使用文档。这个答案帮助了我,我认为这个问题很有用。 – 2016-12-28 08:04:22
MSDN说:
采取(中TSource)列举源,并产生元素,直到计数元素已经取得或源包含没有更多的元素。
试试这个
TheListOfObjects = TheListOfObjects.Take(TheListOfObjects.Count > 30 ? 30 : TheListOfObjects.Count).ToList();
这应该是测试一个非常简单的事情。 'var foo =(new [] {1,2})。Take(10);' – drch 2012-04-09 13:40:18
LinqPad在这些情况下是你的朋友... – benPearce 2017-05-03 04:59:40