我的问题是这个问题的一部分:
我从一个表单中收到了一个id的集合.我需要获取密钥,将它们转换为整数并从数据库中选择匹配的记录.
[HttpPost]
public ActionResult Report(FormCollection collection)
{
var listofIDs = collection.AllKeys.ToList();
// List<string> to List<int>
List<Dinner> dinners = new List<Dinner>();
dinners= repository.GetDinners(listofIDs);
return View(dinners);
}
Run Code Online (Sandbox Code Playgroud) 所以我有一个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);
Run Code Online (Sandbox Code Playgroud)
所以你可以看到,我正在使用它asInt作为调用的临时空间TryParse,只是为了确定是否TryParse会成功(返回bool).然后,在投影中,我实际上正在执行解析.那感觉很难看.
这是使用LINQ过滤单行中的可解析值的最佳方法吗?