Ситуация: В методе происходит парсинг данных:
var CompareStatLeftLevel_ = documentleft.All.Where(m =>
m.LocalName == "li" &&
m.HasAttribute("class") &&
m.GetAttribute("class").Contains("user-profile__data-item")
).ElementAt(2).TextContent.ToString();
Нужный элемент с индексом [2] всегда последний в списке "user-profile__data-item". Но иногда он может быть с индексом [1]. Тогда логично было бы написать
try{...ElementAt(2)...}
catch (IndexOutOfRangeException)
{...ElementAt(1)...}
Но что делать если индекс будет [0]?
Нашел информацию про использование "when" в блоке "catch", но что туда передавать?
Если ваш элемент последний - то можете использовать .Last() или .LastOrDefault() из арсенала Linq (это же IEnumerable)
При этом вместе с .LastOrDefault() можете использовать Null-условный оператор ?. если у вас версия C# 6 и выше - будет удобнее обращаться к полям.
.Contains("user-profile__data-item").LastOrDefault()?.TextContent
И ещё хочу заметить - не совсем относящееся к вопросу. Я бы записал ваш пример не как
documentleft.All.Where(m =>
m.LocalName == "li" &&
m.HasAttribute("class") &&
m.GetAttribute("class").Contains("user-profile__data-item")
А более кратко:
document.QuerySelectorAll("li.user-profile__data-item")
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости