C# 将字符数组/字符串转换为布尔数组

C# 将字符数组/字符串转换为布尔数组,c#,arrays,string,boolean,C#,Arrays,String,Boolean,我们的数据库中有一个字段,表示一周中每一天的真/假标志,如下所示:“1111110” 我需要将这个值转换为布尔值数组 为此,我编写了以下代码: char[] freqs = weekdayFrequency.ToCharArray(); bool[] weekdaysEnabled = new bool[]{ Convert.ToBoolean(int.Parse(freqs[0].ToString())), Convert.ToBoolean(int.Parse(freqs[

我们的数据库中有一个字段,表示一周中每一天的真/假标志,如下所示:“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()))
};
我觉得这种方式太笨重了,因为转换太多了

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


我知道你可以把它写在for循环中,但一周中的天数永远不会改变,因此我认为这是一种更有效的方法。

一点LINQ可以让这成为一项非常简单的任务:

var weekdaysEnabled = weekdayFrequency.Select(chr => chr == '1').ToArray();
请注意,
string
已经实现了
IEnumerable
,因此您可以直接在其上使用LINQ方法。

在.NET 2中

bool[] weekdaysEnabled1 =
Array.ConvertAll<char, bool>(
    freqs,
    new Converter<char, bool>(delegate(char c) { return Convert.ToBoolean(int.Parse(freqs[0].ToString())); }));
bool[]工作日启用1=
Array.ConvertAll(
频率,
新的转换器(委托(charc){return Convert.ToBoolean(int.Parse(freqs[0].ToString());});

当你比较字符时,测试应该是
chr=='1'
。这就是我喜欢stackoverflow的地方,你问一个问题,一分钟后你就有了答案;D您必须将中的双引号更改为单引号,尽管我们正在处理字符,但这会编译好:D谢谢@达林:下次当这篇文章明显是打字错误时,你可以随意编辑它@彼得:没问题,很高兴它能完成任务。weekdaysEnabled1是错的:“allWeekdays”是对的,它只是一个更简洁的语法,但我认为转换的次数是一样的:(我不知道为什么公共静态bool-ToBoolean(char-value)方法没有在框架中实现