如何将字符串转List<int>的foreach嵌套条件代码转为LINQ表达式?
可以用LINQ重写该方法
当然可以用LINQ表达式简化这段代码,核心思路是用Select操作符遍历分割后的每个元素,结合int.TryParse的结果做条件判断,最后转成List<int>返回。
重写后的代码如下:
public static IList<int> ConvertToListInt(string data) { return data.Split(',') .Select(item => int.TryParse(item, out var num) ? num : int.MinValue) .ToList(); }
说明:
data.Split(','):和原代码逻辑一致,按逗号分割输入字符串Select(item => ...):对每个分割后的元素做处理:- 调用
int.TryParse(item, out var num)尝试转换,该方法会自动忽略元素前后的空格(和原代码行为完全匹配) - 如果转换成功,返回解析出的
num;失败则返回int.MinValue
- 调用
.ToList():将LINQ查询结果转换为List<int>,满足返回IList<int>的类型要求
这段代码和原实现的逻辑完全一致,比如输入"abc, 2, 3"时,会返回包含int.MinValue、2、3的列表。
内容的提问来源于stack exchange,提问作者roman_s
相关产品推荐
相关产品推荐

