Saltar al contenido

Escriba la inferencia en C#

LINQ significa Language-Integrated Query , un conjunto de tecnologías basadas en la integración de capacidades de consulta directamente en el lenguaje C#. Son muy similares a las consultas SQL, y el objetivo es filtrar los datos en base a criterios específicos. LINQ es compatible con la mayoría de los tipos de datos, incluidos XML, SQL, etc. Para más detalles, visite la documentación oficial.

En el siguiente ejemplo crearemos una clase Servidores con un conjunto de atributos que incluyen Nombre, SO, CPU, RAM y Precio. Usando LINQ, seremos capaces de filtrar servidores basados en estas propiedades.

Escriba la inferencia en C#
Escriba la inferencia en C#
12345678910111213141516171819202122232425262728293031323334353637usando Sistema;usando Sistema.Colecciones.Genérico;usando Sistema. Linq;namespace {publicclassServers{publicstring Name {get;set;}publicstring OS {get;set;}publicInt16 CPU {get;set;}publicInt16 RAM {get;set;}publicdouble Price {get;set;}publicstaticvoidMain(){ List<Servers> serversList =newList<Servers> {newServers(){ Name="Small", OS="Windows 10", CPU=2, RAM=2, Price=10},newServers(){ Name="Small-Medium", OS="Windows 10", CPU=2, RAM=3, Price=12},newServers(){ Name="Medium", OS="Windows 2016", CPU=8, RAM=16, Price=15},newServers(){ Name="Medium-Big", OS="Windows 2016", CPU=8, RAM=20, Price=18},newServers(){ Name="Big", OS="Windows 2019", CPU=16, RAM=32, Price=25}}; var serverQuery =de servidor en servidoresList where server. Precio =18selectnew{ servidor.Nombre, servidor.OS, servidor.CPU, servidor.RAM, servidor.Precio };foreach(var servidor en servidorQuery){ Consola.WriteLine("Nombre={0}, OS={1}", servidor.Nombre, servidor.OS);} Consola.Tecla de lectura();}}

csharp

El resultado producido es el siguiente.

1234Nombre=Pequeño, OS=Windows 10Name=Pequeño-Medio, OS=Windows 10Name=Medio, OS=Windows 2016Name=Medio-Grande, OS=Windows 2016

bash

Diseccionemos el ejemplo para entender cómo encajan la inferencia de tipo y el LINQ.

Estamos usando dos espacios de nombres adicionales. Uno se llama System.Collections.Generic, y el otro es System.Linq. El primero nos proporciona la implementación de la estructura de datos de la Lista donde almacenamos nuestros servidores. El segundo añade las capacidades de LINQ a nuestra aplicación. Después de la inicialización de la lista con los servidores, la magia sucede.

123var serverQuery =from server in serversList where server.Price <=18selectnew{ server.Name, server.OS, server.CPU, server.RAM, server.Price };

csharp

Primero definimos nuestra variable, que contiene los resultados de la consulta, luego la consulta busca servidores más baratos que 19. La palabra clave var nos permite decidir el tipo de variable durante el tiempo de ejecución, básicamente separando el tipo de elementos que se buscan y el contenido real que almacenamos en serversList.

El procesamiento de los resultados también se realiza con la ayuda de la palabra clave var.

1234foreach(var servidor en serverQuery){ Console.WriteLine("Name={0}, OS={1}", server.Name, server.OS);}

csharp