【发布时间】:2011-06-25 02:29:10
【问题描述】:
所以我有一个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 是否会成功(返回布尔值)。然后,在投影中,我实际上是在执行解析。感觉很丑。
这是使用 LINQ 在一行中过滤可解析值的最佳方法吗?
【问题讨论】:
-
可以直接使用
asInt作为选择值。 -
对;看起来乔的回答抓住了这一点。实际上,我将其更改为我接受的答案,因为它比其他一些更简洁。