7. ¿Por qué LinQ?
• Lenguaje Familiar
• Menos Código
• Código mas legible
• Consultas estándar a través de diferentes repositorios
• Compilación de queries
• Soporte de IntelliSense
• Formatear datos
8.
9. C# Características para LINQ
Queries Básicas
Filtrado, Ordenamiento, Proyección
Agrupamiento, Join, Agregado
XML SQL DB
Capacidades de LinQ
10. IEnumerable
public interface IEnumerable<out T> : IEnumerable
{
IEnumerator<T> GetEnumerator();
}
public interface IEnumerator
{
object Current { get; }
bool MoveNext();
void Reset();
}
IEnumerator
17. Métodos de Extensión
public static class StringExtensions {
static public double ToDouble(this string data) {
double result = double.Parse(data);
return result;
}
}
string text = "43.35";
double data = text.ToDouble();
Consumiendo Métodos de Extensión
18. Delegados : Func y Action
Func<Movie, bool> isGreatMovie = s => s.Year == 2018
&& s.Language == Language.English;
var movie = new Movie() { Year = 2018, Language = Language.English };
bool isGreatMovieResult = isGreatMovie(movie);
Parámetro
Retorno Lambda
Action<Movie> rentMovie = movie => movie.Rented = true;
Movie movieToRent = new Movie();
rentMovie(movieToRent);
Parámetro
27. Ejecución diferida
var query = movies.Where(city => city.Year > 2017);
query = query.Where(x => x.Language == Language.English);
foreach (var movie in query)
Console.WriteLine(movie.Title);
La query no se ejecuta hasta que se fuerza a retornar valores
28. No se trata de una feature
mas de C#.
Se trata de como escribir
mejor código.
Hace varios años atrás, cuando C# era un lenguaje joven aún , sus diseñadores tenían un sueño, el de tener una forma de consultar datos.
Conocer operadores, se pueden aplicar en todos lados
Clases interfaces estructuras,
Nos permite extender inclusive clases selladas que no podríamos extender de otra manera
Se retorna una secuencia de empleados con un nombre
El concepto de secuencia no dice de donde vienen los datos solo que es una secuencia
Debería ser fácil de entender y escribir
Volviendo 10 años al pasado, con la versión 2.0 de c# esto era lo mejor que se podía lograr
El delegado recibe cada empleado para ver si lo queremos o no.
Clases interfaces estructuras,
Nos permite extender inclusive clases selladas que no podríamos extender de otra manera
Surgio como una manera sencilla de trabajar con delegados
El delegate ensucia la sintaxis, difícil de entender.
Por detrás esto compila a código c# que utiliza los métodos de extensión