2012-04-09 19 views
0

比方說,我有一個對象列表TheListOfObjects。當收集計數小於參數時採取(參數)

如果我這樣寫:

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

它會不會崩潰,如果在列表中只有30個項目還是會只返回前30?並且當TheListOfObjects是空的,甚至空?

謝謝。

+12

這應該是測試一個非常簡單的事情。 'var foo =(new [] {1,2})。Take(10);' – drch 2012-04-09 13:40:18

+0

LinqPad在這些情況下是你的朋友... – benPearce 2017-05-03 04:59:40

回答

14

這是那些你應該只是嘗試,或至少檢查documentation之一。

如果列表中只有30個項目,或者它只是返回前30個項目,它會崩潰嗎?

它只是將返回第30

當TheListOfObjects是空

它將返回空序列。

甚至爲空?

這將導致ArgumentNullException

從MSDN:

Take<TSource>枚舉源併產生元素,直到計數元件已經產生或源不包含更多的元素。

如果count小於或等於零,則source未被枚舉且返回空的IEnumerable<TSource>

而下的例外:

Exception    Condition 
ArgumentNullException source is null 

在你花了登錄到StackOverflow上的時候,你可能會要麼檢查MSDN和有一個權威解答(請注意,某些輕度不正確或部分不完整的答案已經在這裏發佈和刪除)或者啓動Visual Studio並且潤滑一下你的輪子。

+0

所以你說,但文檔有時會忽略這些信息,所以感覺像是浪費當我可以在StackOverflow上搜索並找到答案時,可以嘗試使用文檔。這個答案幫助了我,我認爲這個問題很有用。 – 2016-12-28 08:04:22

3

MSDN說:

採取(中TSource)列舉源,併產生元素,直到計數元素已經取得或源包含沒有更多的元素。

3

msdn來自:

Take<T>枚舉源併產生元素,直到計數 元件已經產生或源不包含更多的元素。

如果計數小於或等於零,則不會枚舉源,並返回爲空的IEnumerable<T>

+0

+1發佈有趣的第二句話 - 我現在趕緊用一個'Count'屬性創建一個集合類型,它返回一個負值! – phoog 2012-04-09 15:04:11

0

試試這個

TheListOfObjects = TheListOfObjects.Take(TheListOfObjects.Count > 30 ? 30 : TheListOfObjects.Count).ToList();