Tengo un HashSet<string>
que se agrega periódicamente. Lo que quiero hacer es convertir todo el HashSet en una cadena sin hacer un ciclo foreach. ¿Alguien tiene un ejemplo?C todo el contenido de HashSet <string>
Respuesta
Realizará un bucle sobre los contenidos, tanto si escribe explícitamente uno como si no.
Sin embargo, para hacerlo sin la escritura explícita, y si por "fundido" quiere decir "concatenar", podría escribir algo como esto
string output = string.Join("", yourSet); // .NET 4.0
string output = string.Join("", yourSet.ToArray()); // .NET 3.5
+1, pero también vale la pena señalar que la versión de .NET 3.5 es "peor" que un bucle explícito: requiere dos pasos a través de los datos (uno para la llamada 'ToArray' y otro para la llamada' Join') y un extra asignación (la matriz generada por 'ToArray'). – LukeH
Me gusta la respuesta de @ Brian, incluso le da control sobre lo que el bucle debe poner entre los valores: string.Join (",", set). ¿Habría razones de rendimiento para preferir la sintaxis 4.0 anterior? –
Si desea una única cadena que es una concatenación de los valores de la HashSet, esto debería funcionar ...
class Program
{
static void Main(string[] args)
{
var set = new HashSet<string>();
set.Add("one");
set.Add("two");
set.Add("three");
var count = string.Join(", ", set);
Console.WriteLine(count);
Console.ReadKey();
}
}
Si quieres un único método para conseguir todos los artículos de la hashset concatenan, se puede crear un método de extensión.
[] 's
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
HashSet<string> hashset = new HashSet<string>();
hashset.Add("AAA");
hashset.Add("BBB");
hashset.Add("CCC");
Assert.AreEqual<string>("AAABBBCCC", hashset.AllToString());
}
}
public static class HashSetExtensions
{
public static string AllToString(this HashSet<string> hashset)
{
lock (hashset)
{
StringBuilder sb = new StringBuilder();
foreach (var item in hashset)
sb.Append(item);
return sb.ToString();
}
}
}
Puede utilizar LINQ:
hashSet.Aggregate((a,b)=>a+" "+b)
que introduce un espacio en blanco entre dos elementos de su hashset
- 1. ¿Cómo borro todo el contenido de un archivo en C?
- 2. Copie todo el contenido de un directorio en C#
- 3. Can .NET 4 ISet <> HashSet <> replace NHibernate Iesi.Collections ISet, HashSet?
- 4. C# HashSet <T> rendimiento de búsqueda (en comparación con un ObservableCollection <T>)?
- 5. Llamando a Distinct <>() en HashSet <T>
- 6. SortedSet <T> vs HashSet <T>
- 7. ¿Cuándo debo usar el tipo HashSet <T>?
- 8. Eliminar todo el contenido del archivo
- 9. Eliminar todo el contenido utilizando JS puro
- 10. ¿Cómo puedo capturar todo el contenido dentro de la etiqueta `<body>` con regex?
- 11. C# Hashset conversión a listas
- 12. ¿Cómo obtener el contenido de texto de todo el documento?
- 13. HashSet
- 14. Reemplazo de HashSet en C# 2.0
- 15. Conversión de HashSet <String> a Cadena []
- 16. recuperar un objeto de hashset en C#
- 17. ASP - Imprimiendo todo el contenido de la solicitud
- 18. Incluir todo el contenido de un archivo y repetirlo
- 19. ¿Cómo seleccionar programáticamente todo el contenido de WebView?
- 20. Type.GetType(), HashSet <T> y la Asamblea Calificación
- 21. Convierta una matriz a HashSet <T> en .NET
- 22. HashSet Iterando al eliminar elementos en C#
- 23. ¿Es Enumerable.ElementAt <TSource> O (1) para HashSet?
- 24. ¿Por qué es HashSet <T> .IsReadOnly explícito?
- 25. HashSet <T> en Windows Phone 7
- 26. Cómo usar el HashSet <string>. Método Contieneins() en el modo de caso -insensible?
- 27. Convertir C# HashSet a F # Set
- 28. C# hashset Contiene no únicos objetos
- 29. Concatenar todo el contenido de la lista en una cadena en C#
- 30. HashSet que conserva el pedido
una sola cadena? Como en concatenar los valores? – Brian
Tengo curiosidad por algo. He visto * docenas * de preguntas de SO del formulario "Quiero hacer algo que obviamente requiere un bucle, y no quiero usar un bucle". ** ¿Por qué? ** ¿De dónde este odio tiene la gente para los bucles? –
Creo que la gente quiere mejorar la claridad semántica de su código. Si tuviera 'mySet.ItemsAsOneBigString()' en lugar de 'StringBuilder sb = new StringBuilder(); foreach (String s en myset) sb.append (s); return sb.ToString(); 'Sí, es pequeño, pero también lo son muchos otros" cubos "sintácticos y de azúcar marco de C#;) que hacen que el código sea más claro para leer y determinar el intento. – jasonh