将嵌套if-else的foreach循环转换为Linq表达式

iecba09b  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(88)

这是我首先要解决的问题:将字符串“1,2,3”转换为List<int>如果除了空格和“,”之外还有非数字字符,则将int.MinValue添加到列表中。
因此,如果字符串是“abc,2,3”,那么它应该返回带有“-2147483648,2,3”的List<int>
这是我到目前为止所写的代码。

public static IList<int> ConvertToListInt(string data)
{
    var list = new List<int>();
    var nums = data.Split(',');
    foreach (var item in nums)
    {
        if (int.TryParse(item, out var num))
        {
             list.Add(num);
        } 
        else
        {
            list.Add(int.MinValue);
        }
    }

    return list;
}

字符串
是否可以用LINQ表达式替换ConvertToListInt中的代码?

lawou6xi

lawou6xi1#

你可以把它移到Select表达式中:

var list = data.Split(',')
    .Select(item => int.TryParse(item, out var num) ? num : int.MinValue)
    .ToList();

字符串

相关问题