Аккуратный код для преобразования bool [] -> "ложь, правда, правда, ложь" - PullRequest
10 голосов
/ 16 февраля 2010

Как бы вы преобразовали массив логических значений в строку типа «ложь, истина, истина, ложь» - используя как можно меньше строк кода?

Python позволяет мне использовать следующее (очень красиво и чисто):

", ".join(map(str, [False, True, True, False]))

В C #, string.Join позволяет мне только присоединять массив строк.

Так как же можно сделать то же самое в C #?

Ответы [ 8 ]

27 голосов
/ 16 февраля 2010
var array = new[] { true, false, false };
var result = string.Join(", ", array.Select(b => b.ToString()).ToArray());
Console.WriteLine(result);
4 голосов
/ 26 сентября 2010
arrayOfBools.Select(x => x.ToString()).Aggregate((x, y) => x + ", " + y)
4 голосов
/ 16 февраля 2010

Как насчет:

String.Join(", ", new List<Boolean>() { true, false, false, true }.ConvertAll(x => x.ToString()).ToArray())
3 голосов
/ 07 февраля 2012

Если вы используете .NET 4 , следующей строки достаточно, потому что String.Join<T> внутренне вызывает метод ToString() для каждого элемента.

Console.WriteLine(string.Join(", ", new[] { false, true, true, false }));

>>>> False, True, True, False
2 голосов
/ 16 февраля 2010
var boolStrings = string.Join(",", new List<bool> { false, true, true, false }
      .ConvertAll(x => x.ToString()).ToArray());
1 голос
/ 16 февраля 2010
var bools = new bool[] {false, true, true, false};
var strings = bools.Aggregate((x,y) => x.ToString()+","+y.ToString());
1 голос
/ 16 февраля 2010
 var str = string.Join(", ", new List<Boolean>() {false, true, false}.ToArray());
 Console.WriteLine(str.ToString());
1 голос
/ 16 февраля 2010

Что-то вроде

var s = from item in blnArray select item.Tostring();

Затем использовать перечисляемый s для заполнения массива строк?

На самом деле это не проверялось - вот как я мог бы подойти к нему, если бы меня попросили посмотреть на него ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...