Итак, у меня есть IEnumerable
, который может содержать значения, которые можно проанализировать как int
, а также значения, которых не может быть.
Как вы знаете, Int32.Parse
выдает исключение, если строка не может быть изменена на int, а Int32.TryParse
можно использовать, чтобы проверить, возможно ли преобразование, без обработки исключения.
Итак, я хочу использовать LINQ-запрос для однострочного синтаксического анализа тех строк, которые могут быть проанализированы как int, без генерации исключения по пути. У меня есть решение, но я хотел бы получить совет от сообщества о том, является ли это наилучшим подходом.
Вот что у меня есть:
int asInt = 0;
var ints = from str in strings
where Int32.TryParse(str, out asInt)
select Int32.Parse(str);
Как видите, я использую asInt
в качестве освободите место для вызова TryParse
, просто чтобы определить, будет ли TryParse
успешным (вернуть bool). Затем в проекции я фактически выполняю синтаксический анализ. Это выглядит некрасиво.
Это лучший способ отфильтровать анализируемые значения в одну строку с помощью LINQ?