var key = bindingList.Select((item, index) => new {item})
.Where(x => x.item.Description == description)
.Select(x => x.item.Key)
.First();
我知道我可以使用FirstOrDefault()来避免异常,但是这种情况下的默认值(int 0)不是我想要的,我需要-1作为默认值。有没有其他方法可以在没有实际捕获异常的情况下执行此操作?
谢谢, 米哈伊尔
答案 0 :(得分:2)
尝试使用DefaultIfEmpty
:
var key = bindingList.Select((item, index) => new {item})
.Where(x => x.item.Description == description)
.Select(x => x.item.Key)
.DefaultIfEmpty(-1)
.First();
如果序列为空,DefaultIfEmpty
LINQ运算符将返回未更改的序列(如果它不为空),否则返回仅包含指定值的序列(在本例中为-1
)。此时,您可以安全地调用First
,而无需担心抛出异常。