Попробуйте использовать 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
, не беспокоясь об исключении.