Saltar al pie de página
.NET AYUDA

Lista en C# (Cómo funciona para desarrolladores)

Las listas son estructuras de datos versátiles y dinámicas que se utilizan para almacenar y manipular colecciones de datos en C#. Son parte del espacio de nombres System.Collections.Generic, que proporciona una gama de clases de colección potentes y de tipos seguros, y objetos fuertemente tipados. Este tutorial básico le guiará a través de los conceptos básicos del uso de listas en C#, incluyendo cómo crear/agregar elementos, acceder a índices específicos o primeras apariciones, modificar elementos especificados y eliminar elementos, así como algunos casos de uso comunes.

Creación de listas

Para comenzar a utilizar la clase List, primero debe incluir el espacio de nombres System.Collections.Generic en su código:

using System.Collections.Generic;
using System.Collections.Generic;
Imports System.Collections.Generic
$vbLabelText   $csharpLabel

Después de agregar el espacio de nombres genérico, cree un nuevo objeto List especificando el tipo de datos de todos los elementos que desea almacenar dentro de corchetes angulares (< >). Aquí hay un ejemplo de cómo crear una lista de enteros:

List<int> numbers = new List<int>();
List<int> numbers = new List<int>();
Dim numbers As New List(Of Integer)()
$vbLabelText   $csharpLabel

También puede inicializar una lista con algunos valores iniciales o definirla por la colección especificada así:

List<string> fruits = new List<string> { "apple", "banana", "cherry" };
List<string> fruits = new List<string> { "apple", "banana", "cherry" };
Dim fruits As New List(Of String) From {"apple", "banana", "cherry"}
$vbLabelText   $csharpLabel

También podemos especificar la capacidad inicial predeterminada de la lista. La capacidad inicial especificada es la capacidad máxima predeterminada de la lista.

Métodos de lista

Añadir número de elementos a una lista

Para agregar elementos a su Lista, utilice el método Add():

numbers.Add(1);     // Adds first element
numbers.Add(2);
numbers.Add(3);
numbers.Add(1);     // Adds first element
numbers.Add(2);
numbers.Add(3);
numbers.Add(1) ' Adds first element
numbers.Add(2)
numbers.Add(3)
$vbLabelText   $csharpLabel

También puede agregar un rango de elementos de una colección específica a la lista usando el método AddRange:

List<int> moreNumbers = new List<int> { 4, 5, 6 };
numbers.AddRange(moreNumbers);
List<int> moreNumbers = new List<int> { 4, 5, 6 };
numbers.AddRange(moreNumbers);
Dim moreNumbers As New List(Of Integer) From {4, 5, 6}
numbers.AddRange(moreNumbers)
$vbLabelText   $csharpLabel

Acceso a elementos de lista

Puede acceder a elementos individuales de una lista usando un índice, al igual que con los arreglos:

string firstFruit = fruits[0];          // "apple"
string secondFruit = fruits[1];         // "banana"
string firstFruit = fruits[0];          // "apple"
string secondFruit = fruits[1];         // "banana"
Dim firstFruit As String = fruits(0) ' "apple"
Dim secondFruit As String = fruits(1) ' "banana"
$vbLabelText   $csharpLabel

Tenga en cuenta que las listas están indexadas desde cero, por lo que el primer elemento tiene un índice de 0. El ejemplo anterior almacenará el elemento en la cadena si existe.

Modificación de elementos de lista

Para modificar un elemento en una lista, simplemente asigna un nuevo valor al elemento en el índice deseado, teniendo en cuenta el índice basado en cero:

fruits[1] = "blueberry";
fruits[1] = "blueberry";
fruits(1) = "blueberry"
$vbLabelText   $csharpLabel

Ahora, el segundo elemento en la lista de frutas es "blueberry" en lugar de "banana".

Quitar elementos de una lista

Para eliminar un elemento de una lista, puede utilizar el método Remove, que elimina la primera aparición de un elemento especificado:

fruits.Remove("apple");
fruits.Remove("apple");
fruits.Remove("apple")
$vbLabelText   $csharpLabel

Alternativamente, puede utilizar el método RemoveAt para eliminar un elemento en el índice especificado:

fruits.RemoveAt(0);
fruits.RemoveAt(0);
fruits.RemoveAt(0)
$vbLabelText   $csharpLabel

Para eliminar todos los elementos de una lista, utilice el método Clear:

fruits.Clear();
fruits.Clear();
fruits.Clear()
$vbLabelText   $csharpLabel

Buscar elementos en una lista

Puede utilizar el método Contains() para comprobar si una lista contiene un elemento específico:

bool containsApple = fruits.Contains("apple");  // true
bool containsApple = fruits.Contains("apple");  // true
Dim containsApple As Boolean = fruits.Contains("apple") ' true
$vbLabelText   $csharpLabel

Para encontrar el índice de la primera aparición de un elemento, utilice el método IndexOf:

int appleIndex = fruits.IndexOf("apple");  // 0
int appleIndex = fruits.IndexOf("apple");  // 0
Dim appleIndex As Integer = fruits.IndexOf("apple") ' 0
$vbLabelText   $csharpLabel

Si no se encuentra el elemento, IndexOf devuelve -1.

Looping a través de una lista

Para iterar a través de los elementos de una lista, puede usar un bucle foreach:

foreach (string fruit in fruits)
{
    Console.WriteLine(fruit);
}
foreach (string fruit in fruits)
{
    Console.WriteLine(fruit);
}
For Each fruit As String In fruits
	Console.WriteLine(fruit)
Next fruit
$vbLabelText   $csharpLabel

Alternativamente, puede utilizar un bucle for con la propiedad Count, que devuelve la cantidad de elementos en la lista:

for (int i = 0; i < fruits.Count; i++)
{
    Console.WriteLine(fruits[i]);
}
for (int i = 0; i < fruits.Count; i++)
{
    Console.WriteLine(fruits[i]);
}
For i As Integer = 0 To fruits.Count - 1
	Console.WriteLine(fruits(i))
Next i
$vbLabelText   $csharpLabel

Ordenar una lista

Para ordenar una lista en orden ascendente, utilice el método Sort:

List<int> unsortedNumbers = new List<int> { 5, 2, 8, 1, 4 };
unsortedNumbers.Sort();

// Now, unsortedNumbers is { 1, 2, 4, 5, 8 }
List<int> unsortedNumbers = new List<int> { 5, 2, 8, 1, 4 };
unsortedNumbers.Sort();

// Now, unsortedNumbers is { 1, 2, 4, 5, 8 }
Dim unsortedNumbers As New List(Of Integer) From {5, 2, 8, 1, 4}
unsortedNumbers.Sort()

' Now, unsortedNumbers is { 1, 2, 4, 5, 8 }
$vbLabelText   $csharpLabel

Para ordenar una lista en orden descendente, puede utilizar el método Sort con una comparación personalizada:

unsortedNumbers.Sort((a, b) => b.CompareTo(a));

// Now, unsortedNumbers is { 8, 5, 4, 2, 1 }
unsortedNumbers.Sort((a, b) => b.CompareTo(a));

// Now, unsortedNumbers is { 8, 5, 4, 2, 1 }
unsortedNumbers.Sort(Function(a, b) b.CompareTo(a))

' Now, unsortedNumbers is { 8, 5, 4, 2, 1 }
$vbLabelText   $csharpLabel

Para una clasificación más compleja, puede implementar una clase IComparer personalizada o utilizar LINQ (consulta integrada en el lenguaje). El algoritmo de búsqueda binaria funciona en listas ordenadas.

Uso de LINQ con listas

LINQ permite realizar consultas y transformaciones poderosas en colecciones, incluidas las listas. Para usar LINQ, primero debe incluir el espacio de nombres System.Linq en su código:

using System.Linq;
using System.Linq;
Imports System.Linq
$vbLabelText   $csharpLabel

Aquí hay algunos ejemplos de consultas LINQ en una lista:

Filtrar una lista

List<int> evenNumbers = numbers.Where(x => x % 2 == 0).ToList();
List<int> evenNumbers = numbers.Where(x => x % 2 == 0).ToList();
Dim evenNumbers As List(Of Integer) = numbers.Where(Function(x) x Mod 2 = 0).ToList()
$vbLabelText   $csharpLabel

Mapeo (transformación) de elementos en una lista

List<string> fruitNamesUpperCase = fruits.Select(x => x.ToUpper()).ToList();
List<string> fruitNamesUpperCase = fruits.Select(x => x.ToUpper()).ToList();
Dim fruitNamesUpperCase As List(Of String) = fruits.Select(Function(x) x.ToUpper()).ToList()
$vbLabelText   $csharpLabel

Encontrar los valores mínimo y máximo de una lista

int minValue = numbers.Min();
int maxValue = numbers.Max();
int minValue = numbers.Min();
int maxValue = numbers.Max();
Dim minValue As Integer = numbers.Min()
Dim maxValue As Integer = numbers.Max()
$vbLabelText   $csharpLabel

Convertir una lista en una matriz

Para convertir una lista en una matriz, puede utilizar el método ToArray:

int[] numbersArray = numbers.ToArray();
int[] numbersArray = numbers.ToArray();
Dim numbersArray() As Integer = numbers.ToArray()
$vbLabelText   $csharpLabel

Exportación de datos de listas a un PDF con IronPDF

En esta sección, demostraremos cómo exportar los datos en una lista a un archivo PDF usando la biblioteca IronPDF. Esto puede ser útil cuando deseas generar un informe o una versión imprimible de tus datos.

Primero, descargue e instale el paquete NuGet de IronPDF en su proyecto:

Install-Package IronPdf

A continuación, incluya el espacio de nombres IronPdf en el código:

using IronPdf;
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

Ahora, creemos una función simple que convierta un List de cadenas en una tabla HTML y luego la exporte a un archivo PDF:

using System.Collections.Generic;
using System.Text;
using IronPdf;

void ExportListToPdf(List<string> data, string pdfFilePath)
{
    // Create an HTML table from the list data
    StringBuilder htmlBuilder = new StringBuilder();
    htmlBuilder.Append("<table><tr><th>Item</th></tr>");

    foreach (string item in data)
    {
        htmlBuilder.Append($"<tr><td>{item}</td></tr>");
    }

    htmlBuilder.Append("</table>");

    // Convert the HTML table to a PDF using IronPDF
    var renderer = new ChromePdfRenderer();
    PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlBuilder.ToString());

    // Save the PDF to the specified file path
    pdf.SaveAs(pdfFilePath);
}
using System.Collections.Generic;
using System.Text;
using IronPdf;

void ExportListToPdf(List<string> data, string pdfFilePath)
{
    // Create an HTML table from the list data
    StringBuilder htmlBuilder = new StringBuilder();
    htmlBuilder.Append("<table><tr><th>Item</th></tr>");

    foreach (string item in data)
    {
        htmlBuilder.Append($"<tr><td>{item}</td></tr>");
    }

    htmlBuilder.Append("</table>");

    // Convert the HTML table to a PDF using IronPDF
    var renderer = new ChromePdfRenderer();
    PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlBuilder.ToString());

    // Save the PDF to the specified file path
    pdf.SaveAs(pdfFilePath);
}
Imports System.Collections.Generic
Imports System.Text
Imports IronPdf

Private Sub ExportListToPdf(ByVal data As List(Of String), ByVal pdfFilePath As String)
	' Create an HTML table from the list data
	Dim htmlBuilder As New StringBuilder()
	htmlBuilder.Append("<table><tr><th>Item</th></tr>")

	For Each item As String In data
		htmlBuilder.Append($"<tr><td>{item}</td></tr>")
	Next item

	htmlBuilder.Append("</table>")

	' Convert the HTML table to a PDF using IronPDF
	Dim renderer = New ChromePdfRenderer()
	Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlBuilder.ToString())

	' Save the PDF to the specified file path
	pdf.SaveAs(pdfFilePath)
End Sub
$vbLabelText   $csharpLabel

Para usar esta función, simplemente llámela con la lista y la ruta de archivo PDF deseada:

List<string> fruits = new List<string> { "apple", "banana", "cherry" };
ExportListToPdf(fruits, "Fruits.pdf");
List<string> fruits = new List<string> { "apple", "banana", "cherry" };
ExportListToPdf(fruits, "Fruits.pdf");
Dim fruits As New List(Of String) From {"apple", "banana", "cherry"}
ExportListToPdf(fruits, "Fruits.pdf")
$vbLabelText   $csharpLabel

Esto generará un archivo PDF llamado "Fruits.pdf" que contiene una tabla con la lista de frutas convirtiendo HTML a PDF con IronPDF. Puede modificar la función ExportListToPdf para adaptarla a sus necesidades, como agregar estilo personalizado a la tabla HTML o contenido adicional al PDF.

Lista de C# (Cómo funciona para desarrolladores) Figura 1 - HTML a PDF

Conclusión

En este tutorial básico, cubrimos los conceptos básicos del uso de listas en C# y demostramos cómo integrar IronPDF para exportar datos de listas a un archivo PDF. Al incorporar IronPDF en sus proyectos, puede generar fácilmente informes, facturas u otros documentos imprimibles desde sus proyectos C#.

IronPDF ofrece una prueba gratuita, lo que permite probar sus capacidades antes de comprometerse a una compra.

Preguntas Frecuentes

¿Cómo puedo crear una lista en C#?

Para crear una lista en C#, debe incluir el espacio de nombres System.Collections.Generic. Luego puede declarar una lista especificando el tipo de dato entre paréntesis angulares. Por ejemplo: List<int> numbers = new List<int>();

¿Qué métodos se usan para añadir elementos a una lista en C#?

Los elementos pueden añadirse a una lista en C# usando el método Add() para elementos individuales y AddRange() para añadir una colección de elementos.

¿Cómo puedo exportar una lista de C# a un archivo PDF?

Para exportar una lista en C# a un archivo PDF, puede usar la biblioteca IronPDF. Convierta los datos de su lista en un formato de tabla HTML y luego renderícelo como PDF usando IronPDF.

¿Cuál es la mejor manera de ordenar una lista en C#?

Puede ordenar una lista en C# en orden ascendente usando el método Sort(). Para ordenar en orden descendente, puede usar Sort() con un delegado de comparación personalizado.

¿Cómo accedes a los elementos en una lista de C#?

Los elementos en una lista de C# se pueden acceder usando su índice, similar a los arreglos. Las listas están indexadas a base cero, por lo que puede usar la posición de un elemento en la lista para recuperarlo.

¿Qué opciones están disponibles para eliminar elementos de una lista en C#?

Puede eliminar elementos de una lista en C# usando el método Remove() para elementos específicos, RemoveAt() para un índice específico o Clear() para eliminar todos los elementos.

¿Cómo se puede utilizar LINQ con listas de C#?

LINQ se puede usar con listas de C# para realizar consultas y transformaciones potentes, como filtrado, mapeo y encontrar valores mínimos o máximos de manera eficiente.

¿Cómo puedo convertir una lista a un arreglo en C#?

Puede convertir una lista de C# a un arreglo usando el método ToArray(), que crea un nuevo arreglo que contiene los elementos de la lista.

¿Cuáles son algunos casos de uso comunes para listas en C#?

Las listas en C# se utilizan comúnmente para gestionar colecciones dinámicas de datos, realizar consultas complejas con LINQ y generar informes o documentos usando bibliotecas como IronPDF.

¿Cómo iteras sobre los elementos en una lista de C#?

Puede iterar sobre los elementos en una lista de C# usando bucles foreach para iteración simple o bucles for cuando necesite el índice.

Jacob Mellor, Director de Tecnología @ Team Iron
Director de Tecnología

Jacob Mellor es Director de Tecnología de Iron Software y un ingeniero visionario pionero en la tecnología C# PDF. Como desarrollador original de la base de código principal de Iron Software, ha dado forma a la arquitectura de productos de la empresa desde su creación, ...

Leer más

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame