// ===++===
//
// 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<Fruta> frutas = new List<Fruta>(){
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<string> 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();
}
}
}
Ly8gPT09Kys9PT0KLy8KLy8JT3J0aXpPTAovLwovLyA9PT0tLT09PQovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLwovLyBDbGFzZTogRnJ1dGFMaW5xLmNzCi8vCi8vIFByb3DDs3NpdG86IEVqZW1wbG8gY29tcGxldG8gZGUgTElOUS4KLy8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KCnVzaW5nIFN5c3RlbTsKdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CnVzaW5nIFN5c3RlbS5MaW5xOwp1c2luZyBTeXN0ZW0uVGV4dDsKCm5hbWVzcGFjZSBSZWNldGFzLkNhcDAyCnsKCWludGVybmFsIGNsYXNzIEZydXRhCgl7CgkJcHVibGljIEZydXRhKHN0cmluZyBub21icmUsIHN0cmluZyBjb2xvcikKCQl7CgkJCU5vbWJyZSA9IG5vbWJyZTsKCQkJQ29sb3IgPSBjb2xvcjsKCQl9CgkJCgkJcHVibGljIHN0cmluZyBOb21icmUKCQl7CgkJCWdldDsKCQkJc2V0OwoJCX0KCQkKCQlwdWJsaWMgc3RyaW5nIENvbG9yCgkJewoJCQlnZXQ7CgkJCXNldDsKCQl9Cgl9CgkKCWludGVybmFsIGNsYXNzIEZydXRhTGlucQoJewoJCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCQl7CgkJCS8vIENyZWFjacOzbiBkZSBsYSBjb2xlY2Npw7NuIGNvbiBvYmpldG9zIEZydXRhOgoJCQlMaXN0PEZydXRhPiBmcnV0YXMgPSBuZXcgTGlzdDxGcnV0YT4oKXsKCQkJCW5ldyBGcnV0YSgicGVyYSIsICJ2ZXJkZSIpLAoJCQkJbmV3IEZydXRhKCJtb3JhIiwgInJvam8iKSwKCQkJCW5ldyBGcnV0YSgiY2VyZXphIiwgInJvam8iKSwKCQkJCW5ldyBGcnV0YSgibWFuZ28iLCAiYW1hcmlsbG8iKSwKCQkJCW5ldyBGcnV0YSgiYmFuYW5vIiwgImFtYXJpbGxvIiksCgkJCQluZXcgRnJ1dGEoIm5hcmFuamEiLCAibmFyYW5hamEiKSwKCQkJCW5ldyBGcnV0YSgidG9tYXRlIiwgInJvam8iKSwKCQkJCW5ldyBGcnV0YSgibWVsw7NuIiwgImFtYXJpbGxvIiksCgkJCQluZXcgRnJ1dGEoIm1hbnphbmEiLCAidmVyZGUiKQoJCQl9OwoJCQkKCQkJLy8gU2VsZWNjaW9uYW1vcyBsb3Mgbm9tYnJlcyBkZSBsYXMgZnJ1dGFzIHF1ZSBubyBzb24gcm9qYXMsIHkgCgkJCS8vIHF1ZSBzdSBwcmltZXJhIGxldHJhIGVzIGRpc3RpbnRhIGRlIGBwYDoKCQkJSUVudW1lcmFibGU8c3RyaW5nPiByZXN1bHRhZG8gPSBmcm9tIGZydXRhIGluIGZydXRhcyB3aGVyZSBmcnV0YS5Db2xvciAhPSAicm9qbyIgCgkJCQkJCQkJCQkgICAmJiBmcnV0YS5Ob21icmVbMF0gIT0gJ3AnIG9yZGVyYnkgZnJ1dGEuTm9tYnJlIAoJCQkJCQkJCQkJICAgc2VsZWN0IGZydXRhLk5vbWJyZTsKCQkgICAKCQkJLy8gVmlzdWFsaXphY2nDs24gZGUgcmVzdWx0YWRvczoKCQkJQ29uc29sZS5Xcml0ZUxpbmUoIlxuQ29uc3VsdGEgdXNhbmRvIGV4cHJlc2lvbmVzIGVzdMOhbmRhcjoiKTsKCQkJZm9yZWFjaChzdHJpbmcgbm9tYnJlIGluIHJlc3VsdGFkbykKCQkJewoJCQkJQ29uc29sZS5Xcml0ZUxpbmUoIlx0UmVzdWx0YWRvOiB7MH0uIiwgbm9tYnJlKTsKCQkJfQoJCQkKCQkJLy8gQWhvcmEgdXNhbW9zIGV4cHJlc2lvbmVzIGxhbWJhZGEgcGFyYSBsYSBtaXNtYSBjb25zdWx0YToKCQkJcmVzdWx0YWRvID0gZnJ1dGFzLldoZXJlKGZydXRhID0+IGZydXRhLkNvbG9yICE9ICJyb2pvIiAmJiBmcnV0YS5Ob21icmVbMF0gIT0gJ3AnKS4KCQkJCQkgICAgT3JkZXJCeShmcnV0YSA9PiBmcnV0YS5Ob21icmUpLlNlbGVjdChmcnV0YSA9PiBmcnV0YS5Ob21icmUpOwoJCQkJCQkKCQkJLy8gVmlzdWFsaXphY2nDs24gZGUgcmVzdWx0YWRvczoKCQkJQ29uc29sZS5Xcml0ZUxpbmUoIlxuQ29uc3VsdGEgdXNhbmRvIGV4cHJlc2lvbmVzIGxhbWJkYToiKTsKCQkJZm9yZWFjaChzdHJpbmcgbm9tYnJlIGluIHJlc3VsdGFkbykKCQkJewoJCQkJQ29uc29sZS5Xcml0ZUxpbmUoIlx0UmVzdWx0YWRvOiB7MH0uIiwgbm9tYnJlKTsKCQkJfQoJCQkKCQkJQ29uc29sZS5Xcml0ZUxpbmUoKTsKCQl9Cgl9Cn0=