Преобразование char Array/string для bool Array

У нас есть это поле в нашей базе данных, указывающее флаг 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?

Я знаю, что вы могли бы написать это для цикла, но количество дней в неделю никогда не изменится, и поэтому я думаю, что это более эффективный способ.

+2
источник поделиться
2 ответа

Немного LINQ может сделать это довольно тривиальной задачей:

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

Обратите внимание, что string уже реализует IEnumerable<char>, поэтому вы можете напрямую использовать методы LINQ.

+10
источник

В .NET 2

bool[] weekdaysEnabled1 =
Array.ConvertAll<char, bool>(
    freqs,
    new Converter<char, bool>(delegate(char c) { return Convert.ToBoolean(int.Parse(freqs[0].ToString())); }));
+2
источник

Посмотрите другие вопросы по меткам или Задайте вопрос