Итак, у меня есть IEnumerable<string>
, который может содержать значения, которые могут быть проанализированы как 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
успешным (return bool). Затем, в проекции, я фактически выполняю синтаксический анализ. Это кажется уродливым.
Это лучший способ фильтрации анализируемых значений в одной строке с помощью LINQ?