我们的数据库中有一个字段,用于指示一周中每一天的true / false标志,如下所示:'1111110'

我需要将此值转换为布尔数组。

为此,我编写了以下代码:

char[] freqs = weekdayFrequency.ToCharArray();
bool[] weekdaysEnabled = new bool[]{
    Convert.ToBoolean(int.Parse(freqs[0].ToString())),
    Convert.ToBoolean(int.Parse(freqs[1].ToString())),
    Convert.ToBoolean(int.Parse(freqs[2].ToString())),
    Convert.ToBoolean(int.Parse(freqs[3].ToString())),
    Convert.ToBoolean(int.Parse(freqs[4].ToString())),
    Convert.ToBoolean(int.Parse(freqs[5].ToString())),
    Convert.ToBoolean(int.Parse(freqs[6].ToString()))
};


而且由于进行了多次转化,我觉得这种方法太笨拙。

将这个固定长度的字符串转换为bool数组的理想/最干净的方法是什么?

我知道您可以在for循环中编写此代码,但是一周中的天数永远不会改变,因此我认为这是更高效的方法。

最佳答案

一点LINQ可以使这项工作变得很简单:

var weekdaysEnabled = weekdayFrequency.Select(chr => chr == '1').ToArray();


请注意,string已经实现了IEnumerable<char>,因此您可以直接在其上使用LINQ方法。

10-06 10:52