【问题标题】:IEnumerable Any or Count throws ExceptionIEnumerable Any 或 Count 抛出异常
【发布时间】:2013-02-25 18:50:56
【问题描述】:
IEnumerable<ColorRow> result = (from a in Fruit.Apple.Colors where (a.color == "red") select a);

如果我尝试使用 result.Any() 或 Count() 它在没有返回结果时抛出异常,我理解上面的 ColorRow 将为空,但我该如何检查呢?

将上述更改为 var 结果帮助是否等同于 Colrow result = new ColorRow ??

不知道如何处理上面的 IEnumerable 为空,空。

我目前正在使用 try and catch,但看起来并不干净。

try
{
result.FirstOrDefault().Color= "pink";
return true;
}
catch
{
return false;
}

【问题讨论】:

  • null != 空!请显示引发异常的实际代码并告诉我们它是什么异常 - 以及它的错误消息是什么。
  • @ Daniel : Result.FirstOrDefault() throws NullreferenceException: Object reference not set to the instance.

标签: c#-4.0


【解决方案1】:

我目前正在使用 try and catch,但看起来并不干净。

您可以检查对象是否为 null,然后比较颜色,而不是 try catch。

var temp = result.FirstOrDefault();
if(temp != null && temp.Color == "Pink")
   return true;
else
   return false;

对于关于AnyCount 的其他问题,您确定您的代码正在编译,因为您似乎在查询Fruit.Apple.Colors 并且您正在创建ColorRow 的IEnumerable,它应该是:

IEnumerable<Color>....

(如果使用隐式类型 (var) 正在解决问题,则可能您在赋值中使用了错误的类型)

【讨论】:

  • Result.FirstOrDefault() 抛出 NullreferenceException:对象引用未设置到实例。假设如果任何行匹配或不匹配,则可以初始化 ColorRow,我如何找到而不是捕获 object 为 null 的异常?
猜你喜欢
  • 2013-11-16
  • 1970-01-01
  • 1970-01-01
  • 2020-06-22
  • 2011-08-29
  • 2013-05-24
  • 1970-01-01
  • 2012-12-22
  • 2021-04-15
相关资源
最近更新 更多