通过LINQ更改此循环?

时间:2017-05-10 15:27:02

标签: c# linq

我收到一串8(可以是'。'或' 0'或' 1'在任何位置) 示例:

  • 00000000
  • 0.0111000
  • 00010.00
  • 等等...

我得到了这个非常直接的循环:

        bool[] aBool= new bool[8];

        for (int i = 0; i <= _input.Length - 1; i++)
        {
            switch (_input[i])
            {
                case zero:
                    aBool[i] = false;
                    break;

                case one:
                    aBool[i] = true;
                    break;

                case dot:
                    aBool[i] = null;
                    break;

                default:
                    break;
            }

        }
        return aBool;

返回abool

如何在LINQ中转换它?

我为一个只有0或1的字符串和LINQ:

创建了一个
  • return _input.Select(c =&gt; c ==&#39; 1&#39;)。ToArray();

但是用点......

由于

2 个答案:

答案 0 :(得分:5)

input.Select(c => c == '.' ? (bool?)null : c == '1').ToArray();

答案 1 :(得分:2)

您可以尝试使用简单的SelectToArray

  string _input = ".0111000";

  // Since you allow null, you have to switch to Nullable<bool> - bool?
  bool?[] aBool = _input
    .Select(c => 
         c == '1' ? (bool?) true 
       : c == '0' ? (bool?) false 
       : null)
    .ToArray();