// ===++=== // // OrtizOL // // ===--=== /*============================================================ // // Clase: FrutaLinq.cs // // Propósito: Ejemplo completo de LINQ. // ============================================================*/ using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Recetas.Cap02 { internal class Fruta { public Fruta(string nombre, string color) { Nombre = nombre; Color = color; } public string Nombre { get; set; } public string Color { get; set; } } internal class FrutaLinq { public static void Main() { // Creación de la colección con objetos Fruta: List frutas = new List(){ new Fruta("pera", "verde"), new Fruta("mora", "rojo"), new Fruta("cereza", "rojo"), new Fruta("mango", "amarillo"), new Fruta("banano", "amarillo"), new Fruta("naranja", "naranaja"), new Fruta("tomate", "rojo"), new Fruta("melón", "amarillo"), new Fruta("manzana", "verde") }; // Seleccionamos los nombres de las frutas que no son rojas, y // que su primera letra es distinta de `p`: IEnumerable resultado = from fruta in frutas where fruta.Color != "rojo" && fruta.Nombre[0] != 'p' orderby fruta.Nombre select fruta.Nombre; // Visualización de resultados: Console.WriteLine("\nConsulta usando expresiones estándar:"); foreach(string nombre in resultado) { Console.WriteLine("\tResultado: {0}.", nombre); } // Ahora usamos expresiones lambada para la misma consulta: resultado = frutas.Where(fruta => fruta.Color != "rojo" && fruta.Nombre[0] != 'p'). OrderBy(fruta => fruta.Nombre).Select(fruta => fruta.Nombre); // Visualización de resultados: Console.WriteLine("\nConsulta usando expresiones lambda:"); foreach(string nombre in resultado) { Console.WriteLine("\tResultado: {0}.", nombre); } Console.WriteLine(); } } }