我正在尝试读取一个文件,该文件本质上是一个整数列表,由一行分隔。显然,文件输入永远不能被信任,所以我需要过滤掉非整数。
- 1
- 2
- 3
- 4
我知道as
运算符通常会在可以转换的情况下进行转换,然后分配一个空值,但是因为int
不可为空,所以情况并非如此。我想也许我可以投到Nullable<int>
. 我从来没有真正深入研究过这个,我想也许我可以这样做:
var lines = File.ReadAllLines("");
var numbers = lines.Select(line => line as int?).Where(i => i != null);
我知道我可以通过以下方式解决这个问题:
var numbers = lines.Select(line =>
{
int iReturn = 0;
if (int.TryParse(line, out iReturn ))
return iReturn;
else
return null;
}).Where(i => i != null);
我也有可能将其作为扩展方法。
我只是在寻找一种简洁、简洁的方式来在语句中进行强制转换,并了解为什么我的代码无效。