比方說,我有一個對象列表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