2010-02-16 29 views
10

¿Cómo convertiría una matriz de booleanos a una cadena como "falso, verdadero, verdadero, falso" - usando tan pocas líneas de código como ¿posible?Código correcto para convertir bool [] -> "falso, verdadero, verdadero, falso"

Python me permite usar el siguiente (muy agradable y limpio):

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

En C#, string.Join sólo permite que me una a una matriz de cadenas.

Entonces, ¿qué es una forma corta de hacer lo mismo en C#?

Respuesta

27
var array = new[] { true, false, false }; 
var result = string.Join(", ", array.Select(b => b.ToString()).ToArray()); 
Console.WriteLine(result); 
2
var boolStrings = string.Join(",", new List<bool> { false, true, true, false } 
     .ConvertAll(x => x.ToString()).ToArray()); 
4

¿Qué tal:

String.Join(", ", new List<Boolean>() { true, false, false, true }.ConvertAll(x => x.ToString()).ToArray()) 
+0

Esto arrojaría una 'InvalidCastException'. –

+0

@Joao, sí lo compilé allí, actualizado usando ConvertAll – James

+0

Puede eliminar el '()' después de 'new List ' cuando especifica elementos. –

1

Algo a lo largo de las líneas de

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

A continuación, utilice los s enumerables para poblar la matriz de cadenas?

realidad no ensayado esto - esto es sólo la forma en que podría acercarse a él si me pidieran que mirarlo ...

+0

Gracias por la edición John - He aprendido (sangrado) cómo marcar texto como código ... –

1
var str = string.Join(", ", new List<Boolean>() {false, true, false}.ToArray()); 
Console.WriteLine(str.ToString()); 
1
var bools = new bool[] {false, true, true, false}; 
var strings = bools.Aggregate((x,y) => x.ToString()+","+y.ToString()); 
+0

Parece que no funciona porque el valor de retorno lambda debe ser booleano. – AndiDog

4
arrayOfBools.Select(x => x.ToString()).Aggregate((x, y) => x + ", " + y) 
2

Si está utilizando .NET , la siguiente línea es suficiente, porque String.Join<T> internamente llama al ToString() -metodo para cada artículo.

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

>>>> False, True, True, False 
Cuestiones relacionadas