[英]enum_in.Single() is 1 and throws exception
我正在執行以下代碼:
private static T FooException<T>(this IEnumerable<T> enum_in)
{
try
{
return enum_in.Single();
}
catch(InvalidOperationException e)
{
throw new XXXException(enum_in.Count(), e ...
}
}
並獲取InvalidOperationException
。 如果我看一下enum.Count()
那么那正是一項。 那就是我不明白的。 在任何情況下,枚舉可以使用count = 1並在InvalidOperationException
運行嗎?
並非Linq的所有實現都支持所有操作。 嘗試改用.First()
。
編輯:回答關於這不是真的評論。 首先,我們不知道變量的具體類,因此,即使您不知道不支持Single的任何實現,也並不意味着它不存在。
此外,我還在考慮LINQ-To-Entity實現。 我的資料來自Microsoft Press考試70-516的書 ,該書在第423頁上指出,有一些不支持的方法與分頁有關:
分頁分頁操作從序列中返回單個特定元素。 支持的方法是First,FirstOrDefault,Skip和Take。 不支持的方法是ElementAt,ElementAtOrDefault,Last,LastOrDefault, Single ,SingleOrDefault,SkipWhile和TakeWhile。
在本章中,所有示例還都使用“第一”而不是“單個”,這就是為什么我特別注意這一點。 令人驚訝的是,這與注釋中鏈接的msdn文檔相矛盾。
如果可枚舉為空或序列包含多個元素,則Single拋出InvalidOperationException。 如果調用SingleOrDefault()會得到什么?
MSDN說
InvalidOperationException
輸入序列包含多個元素。
-要么-
輸入序列為空。
所以我想您或MSDN是錯誤的。 您也嘗試過SingleOrDefault嗎? 也許是空的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.