簡體   English   中英

enum_in.Single()為1並引發異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM