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