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