InvalidOperationException при использовании First () - PullRequest
2 голосов
/ 27 мая 2011
var key = bindingList.Select((item, index) => new {item})
                    .Where(x => x.item.Description == description)
                    .Select(x => x.item.Key)
                    .First();

Я знаю, что могу использовать FirstOrDefault (), избегая исключения, но по умолчанию в этом случае (int 0) не то, что я хочу, мне нужно -1 как значение по умолчанию.Есть ли другой способ сделать это, не поймав исключения?

Спасибо, Михаил

1 Ответ

2 голосов
/ 27 мая 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...