繁体   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