Tengo un List
que contiene todos los nombres de las bases de datos. Tengo que mostrar los elementos que figuran en esa lista en la consola (usando Console.WriteLine()
). ¿Cómo puedo conseguir esto?Cómo mostrar los elementos de la lista en la ventana de la consola en C#
Respuesta
Suponiendo que los artículos anular ToString
apropiada:
public void WriteToConsole(IEnumerable items)
{
foreach (object o in items)
{
Console.WriteLine(o);
}
}
(No habría ninguna ventaja en el uso de los genéricos en este bucle - acabaríamos llamando Console.WriteLine(object)
todos modos, por lo que sigue siendo la caja tal como lo hace en la parte foreach
en este caso.)
EDITAR: Las respuestas usando son muy buenas.
Mi bucle de arriba es más flexible en el caso de que usted tiene una secuencia arbitraria (por ejemplo, como el resultado de una expresión LINQ), pero si definitivamente tiene un List<T>
diría que es una mejor opción.
Una ventaja de es que si tiene un tipo de lista concreta, usará la sobrecarga más adecuada. Por ejemplo:
List<int> integers = new List<int> { 1, 2, 3 };
List<string> strings = new List<string> { "a", "b", "c" };
integers.ForEach(Console.WriteLine);
strings.ForEach(Console.WriteLine);
Al escribir los números enteros, para ello se utiliza Console.WriteLine(int)
, mientras que al escribir las cuerdas se usará Console.WriteLine(string)
. Si no hay sobrecarga específica disponible (o si solo está utilizando un genérico List<T>
y el compilador no sabe qué es T
) utilizará Console.WriteLine(object)
.
Tenga en cuenta el uso de Console.WriteLine
como grupo de métodos, por cierto. Esto es más conciso que el uso de una expresión lambda, y de hecho ligeramente más eficiente (como el delegado simplemente ser una llamada a Console.WriteLine
, en lugar de una llamada a un método que a su vez sólo llama Console.WriteLine
).
También puede usar foreach incorporado de la Lista, tales como:
List<T>.ForEach(item => Console.Write(item));
Este código también se ejecuta
significativamente
más rápido!
El código anterior también le hace capaz de manipular Console.WriteLine, tales como hacer:
List<T>.ForEach(item => Console.Write(item + ",")); //Put a,b etc.
* Significativamente * ¿Más rápido? Eso me parece muy poco probable, ya que el cuello de botella será la salida de la consola en lugar de un bucle. –
jaja Puedo decir esa palabra. Es solo porque List
Sí, ciertamente es más eficiente, solo que no significativamente. Siempre vale la pena tener en cuenta dónde están realmente los cuellos de botella :) Puedes hacer que la primera versión sea aún más eficiente usando Console.Write como un grupo de métodos, por cierto ... (No puedes hacer eso con el segundo, ya que estás en realidad manipulando el parámetro.) –
En realidad, usted puede hacerlo bastante simple, ya que la lista tiene un método ForEach
y ya que se puede pasar en Console.WriteLine
como un grupo de métodos. El compilador utilizará entonces una conversión implícita para convertir el grupo método a, en este caso, un Action<int>
y escoger el método más específica del grupo, en este caso `Console.WriteLine (int):
var list = new List<int>(Enumerable.Range(0, 50));
list.ForEach(Console.WriteLine);
Obras con cadenas también =)
Para ser completamente pedante (y no estoy sugiriendo un cambio en su respuesta, solo comentando por el bien de interés) "Console.WriteLine" es un grupo de métodos. El compilador usa entonces una conversión implícita del grupo de métodos a Acción, seleccionando el método más específico (Console.WriteLine (int) en este caso).
Para ser totalmente pedante (y no estoy sugiriendo un cambio en tu respuesta, solo comentando por el interés) "Console.WriteLine" es un grupo de métodos. El compilador utiliza entonces una conversión implícita del grupo de métodos a la Acción
Sí, como dije, "si tengo mi redacción correcta": p Actualizando la respuesta (¡hágamelo saber si me equivoqué de nuevo!) – Svish
Console.WriteLine(string.Join<TYPE>("\n", someObjectList));
Esto funcionó mejor para mí, ya que puedo preparar mi cadena antes de enviarla a la consola , en lugar de enviar una línea a la consola cada vez – Mart10
Mientras que las respuestas con son muy buenas.
Encontré String.Join<T>(string separator, IEnumerable<T> values)
método más útil.
Ejemplo:
List<string> numbersStrLst = new List<string>
{ "One", "Two", "Three","Four","Five"};
Console.WriteLine(String.Join(", ", numbersStrLst));//Output:"One, Two, Three, Four, Five"
int[] numbersIntAry = new int[] {1, 2, 3, 4, 5};
Console.WriteLine(String.Join("; ", numbersIntAry));//Output:"1; 2; 3; 4; 5"
Observaciones:
Si separador es nula, una cadena vacía (String.Empty
) se utiliza en su lugar. Si algún miembro de los valores es nulo, se utiliza una cadena vacía en su lugar.
Join(String, IEnumerable<String>)
es un método de conveniencia que le permite concatenar cada elemento en un IEnumerable (Of String) colección sin necesidad de convertir primero los elementos de una matriz de cadenas. Es particularmente útil con expresiones de consulta Language-Integrated Query (LINQ).
Esto debería funcionar bien para el problema, mientras que para otros, tener valores de matriz. Utilizar otras sobrecargas de este mismo método, String.Join Method (String, Object[])
Referencia: https://msdn.microsoft.com/en-us/library/dd783876(v=vs.110).aspx
encontré esto más fácil de entender:
List<string> names = new List<string> { "One", "Two", "Three", "Four", "Five" };
for (int i = 0; i < names.Count; i++)
{
Console.WriteLine(names[i]);
}
- 1. GCC/C ¿cómo ocultar la ventana de la consola?
- 2. Mostrar/Ocultar la ventana de la consola de una aplicación de consola C#
- 3. Estilo lista desordenada para mostrar los elementos de la lista en la caja esquina redondeada
- 4. ¿Cómo ejecutar los programas de la consola hija sin mostrar la ventana de consola desde el programa GUI de Win32?
- 5. Título de la ventana de la consola c
- 6. ocultar la ventana de la consola de un programa C
- 7. ¿Cómo abrir la ventana de la consola en Eclipse?
- 8. mostrar elementos de la lista de imágenes en Timage
- 9. Depuración de C++/SDL con la ventana de la consola
- 10. Ocultar ventana de la consola en la aplicación de consola C#
- 11. Ocultar la ventana de la consola desde Process.Start C#
- 12. ¿Mostrar todos los métodos de objetos en una lista en la consola de Chrome?
- 13. Android: Cómo deshabilitar los elementos de la lista en la creación de la lista
- 14. C++ cambio de salida en la consola
- 15. cómo mostrar la barra de estado en la ventana de la cinta wpf C#
- 16. Código de VBscript para capturar stdout, sin mostrar la ventana de la consola
- 17. ¿Cómo mostrar todos los elementos en una lista de arrays?
- 18. Cómo mostrar variables en la ventana de Taglist en vim
- 19. IcedTea - cómo mostrar la consola de applet ..?
- 20. Cómo mostrar la lista de recursos aprovechables
- 21. La mejor manera de eliminar los elementos de la lista en un bucle en C#
- 22. mostrar la lista de opciones en elisp
- 23. ¿Anida los elementos de la lista dentro de los elementos de lista de una lista ordenada?
- 24. ¿Cómo se recarga la fuente de Python en la ventana de la consola en Eclipse/Pydev?
- 25. Mostrar caracteres UTF-8 en la consola
- 26. ¿Cómo puedo mostrar más decimales en la consola de salida?
- 27. cómo mostrar la lista de archivos de actualización en p4v
- 28. cómo establecer la altura de la lista desplegable y cómo mostrar la lista de lista desplegable siempre hacia abajo mostrar
- 29. cómo mostrar la lista de Python en la plantilla django
- 30. ocultar la ventana de negro en C++
Cómo utilizar esto para los tipos de objetos complejos dicen Lista donde la persona sólo contiene propiedades de cadena . –
Koder101
@ Koder101: Probablemente quieras anular 'ToString' en' Persona'. –