找不到第一个时出现InvalidOperationException

时间:2016-03-09 11:11:41

标签: c# linq invalidoperationexception

我试图逐项查找。

Item item = Shop.Items.Values.First(i => i.Name.Contains(partOfName))

我希望下一步

if (item == null) // if not found
{
    // not found code
}

...但是当找不到项目时我得到InvalidOperationException

首先想到的是

try
{
    Item item = Shop.Items.Values.First(i => i.Name.Contains(partOfName))
}
catch(InvalidOperationException ex)
{
    // not found code
}

处理它的最佳方法是什么?也许没有try / catch?

修改 解决方案:

Item item = Shop.Items.Values.FirstOrDefault(i => i.Name.Contains(partOfName))

if (item == null) // if not found
{
    // not found code
}

1 个答案:

答案 0 :(得分:2)

First会抛出。 FirstOrDefault将返回default<T>。对于参考类型,即null