SlideShare una empresa de Scribd logo
1 de 30
Sumate !!
net-baires.com.ar
slack.net-baires.com.ar
meetup.com/Net-Baires
xamarinassemble.com
01 Que es Linq?
02 Evolución de LinQ
03 Donde usar LinQ?
04 Métodos de Extensión
05 Sintaxis
Agenda
Object Data
Generics
Algoritmos
Relational Data
ADO.NET
SQL
XML Data
XmlDocument
Xpath
Document Oriented
Data
MongoDB.Driver
Trabajando con Data en .NET
Language Integrated Query
LINQ
LINQ
Objetos
MongoDB
Archivos
CSV
File
System
SQL
XML
JS
DataSet
LinQ en TODAS partes
¿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
C# Características para LINQ
Queries Básicas
Filtrado, Ordenamiento, Proyección
Agrupamiento, Join, Agregado
XML SQL DB
Capacidades de LinQ
IEnumerable
public interface IEnumerable<out T> : IEnumerable
{
IEnumerator<T> GetEnumerator();
}
public interface IEnumerator
{
object Current { get; }
bool MoveNext();
void Reset();
}
IEnumerator
Evolución de
LinQ
Sequence<Employee> result =
employees.Where(Name == "Tests");
LinQ en Borrador
IEnumerable<Employee> result =
EnumerableExtensions.Where(employees,
delegate (Employee e) {
return e.Name == "Test";
});
LinQ en C# 2.0
var results = from e in employees
where e.Name == "Test"
select e;
LinQ Hoy
IEnumerable<Employee> result =
EnumerableExtensions.Where(employees,
delegate (Employee e) {
return e.Name == "Test";
});
Sequence<Employee> result =
employees.Where(Name == "Tests");
var results = from e in employees
where e.Name == "Test"
select e;
Evolución de LinQ
Borrador
C# 2.0
Hoy
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
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
Métodos anónimos
public void ValidateDate(Func<DateTime, bool> calculateFunc)
{
if (calculateFunc(DateTime.Now.AddDays(1)))
Console.WriteLine("Fecha Válida");
else
Console.WriteLine("Fecha No Válida");
}
ValidateDate(delegate (DateTime s) {
return s.Year > 12 && s.Year < 20;
});
De Anónimos a Lambda
ValidateDate(delegate (DateTime s) {
return s.Year > 12 && s.Year < 20;
});
ValidateDate((s) =>
{
return s.Year > 12 && s.Year < 20;
});
ValidateDate(dateToValidate => dateToValidate > DateTime.Now);
=>
Expresiones Lambda
public void ValidateDate(Func<DateTime, bool> calculateFunc)
{
if (calculateFunc(DateTime.Now.AddDays(1)))
Console.WriteLine("Fecha Válida");
else
Console.WriteLine("Fecha No Válida");
}
ValidateDate((dateToValidate) => dateToValidate >
DateTime.Now);
Sintaxis de LinQ
Query Syntax
string[] cities = { "Boston", "Los Angeles", "Seattle",
"london", "Hyderabad" };
IEnumerable<string> filteredCities =
from city in cities
where city.StartsWith("L")
&&
city.Length < 15
orderby city
select city;
Method Syntax
string[] cities = { "Boston", "Los Angeles", "Seattle",
"London", "Hyderabad" };
IEnumerable<string> filteredCities =
cities.Where(x => x.StartsWith("L")
&&
x.Length < 15)
.OrderBy(city => city);
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
No se trata de una feature
mas de C#.
Se trata de como escribir
mejor código.
Recursos
• http://germankuber.com.ar/linq-introduccion
• https://code.msdn.microsoft.com/101-LINQ-
Samples-3fb9811b
• http://linqsamples.com/

Más contenido relacionado

Similar a Linq - Introducción

Novedades En Visual Studio Team System 2010
Novedades En Visual Studio Team System 2010Novedades En Visual Studio Team System 2010
Novedades En Visual Studio Team System 2010
Bruno Capuano
 
Linq En Visual Basic 2008
Linq En Visual Basic 2008Linq En Visual Basic 2008
Linq En Visual Basic 2008
kayrambal
 
Sql server 2005_para_desarrolladores_madrid
Sql server 2005_para_desarrolladores_madridSql server 2005_para_desarrolladores_madrid
Sql server 2005_para_desarrolladores_madrid
germanjimenez1977
 

Similar a Linq - Introducción (20)

Arquitectura
Arquitectura Arquitectura
Arquitectura
 
Novedades En Visual Studio Team System 2010
Novedades En Visual Studio Team System 2010Novedades En Visual Studio Team System 2010
Novedades En Visual Studio Team System 2010
 
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
 
Reactvolution
ReactvolutionReactvolution
Reactvolution
 
Exprimiendo SharePoint 2010
Exprimiendo SharePoint 2010Exprimiendo SharePoint 2010
Exprimiendo SharePoint 2010
 
Zend Framework - MVC - 2008
Zend Framework - MVC - 2008Zend Framework - MVC - 2008
Zend Framework - MVC - 2008
 
Técnicas avanzadas para resolver tus problemas de sql server
Técnicas avanzadas para resolver tus problemas de sql serverTécnicas avanzadas para resolver tus problemas de sql server
Técnicas avanzadas para resolver tus problemas de sql server
 
Introducción a Live Cycle Data Services - Michael Borbór
Introducción a Live Cycle Data Services - Michael BorbórIntroducción a Live Cycle Data Services - Michael Borbór
Introducción a Live Cycle Data Services - Michael Borbór
 
Mvc
MvcMvc
Mvc
 
Conoce lo nuevo en RAD Studio, C++ Builder y Delphi 10.2.2
Conoce lo nuevo en RAD Studio, C++ Builder y Delphi 10.2.2Conoce lo nuevo en RAD Studio, C++ Builder y Delphi 10.2.2
Conoce lo nuevo en RAD Studio, C++ Builder y Delphi 10.2.2
 
Dynamics saturday madrid 2019 web api
Dynamics saturday madrid 2019   web apiDynamics saturday madrid 2019   web api
Dynamics saturday madrid 2019 web api
 
Linq En Visual Basic 2008
Linq En Visual Basic 2008Linq En Visual Basic 2008
Linq En Visual Basic 2008
 
Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700
 
Presentación de Be Ruby en la conferencia Rails
Presentación de Be Ruby en la conferencia RailsPresentación de Be Ruby en la conferencia Rails
Presentación de Be Ruby en la conferencia Rails
 
SignalR y dispositivos móviles
SignalR y dispositivos móvilesSignalR y dispositivos móviles
SignalR y dispositivos móviles
 
Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8
 
Introduccion a LINQ
Introduccion a LINQIntroduccion a LINQ
Introduccion a LINQ
 
Migracion a Visual Basic .NET
Migracion a Visual Basic .NETMigracion a Visual Basic .NET
Migracion a Visual Basic .NET
 
Sql server 2005_para_desarrolladores_madrid
Sql server 2005_para_desarrolladores_madridSql server 2005_para_desarrolladores_madrid
Sql server 2005_para_desarrolladores_madrid
 
Argentesting 2018 - Deployment y Testing automatizado en infraestructura
Argentesting 2018 - Deployment y Testing automatizado en infraestructuraArgentesting 2018 - Deployment y Testing automatizado en infraestructura
Argentesting 2018 - Deployment y Testing automatizado en infraestructura
 

Más de Germán Küber

Más de Germán Küber (20)

Explorando el Diseño de la Memoria en Rust
Explorando el Diseño de la Memoria en RustExplorando el Diseño de la Memoria en Rust
Explorando el Diseño de la Memoria en Rust
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
 
Mev Rapido.pptx
Mev Rapido.pptxMev Rapido.pptx
Mev Rapido.pptx
 
Que son los smart contracts.pptx
Que son los smart contracts.pptxQue son los smart contracts.pptx
Que son los smart contracts.pptx
 
De 0 a blockchain developer en 3 meses
De 0 a blockchain developer en 3 mesesDe 0 a blockchain developer en 3 meses
De 0 a blockchain developer en 3 meses
 
Patrones funcionales
Patrones funcionalesPatrones funcionales
Patrones funcionales
 
Patrones de diseño en solidity
Patrones de diseño en solidityPatrones de diseño en solidity
Patrones de diseño en solidity
 
Vertical slice architecture
Vertical slice architectureVertical slice architecture
Vertical slice architecture
 
De 0 a blockchain developer en 3 meses
De 0 a blockchain developer en 3 mesesDe 0 a blockchain developer en 3 meses
De 0 a blockchain developer en 3 meses
 
Diamon pattern presentation
Diamon pattern presentationDiamon pattern presentation
Diamon pattern presentation
 
Patrones funcionales
Patrones funcionalesPatrones funcionales
Patrones funcionales
 
Defensive code
Defensive codeDefensive code
Defensive code
 
Programación Funcional C#
Programación Funcional C#Programación Funcional C#
Programación Funcional C#
 
Unit testing consejos
Unit testing   consejosUnit testing   consejos
Unit testing consejos
 
Defensive code C#
Defensive code C#Defensive code C#
Defensive code C#
 
Event sourcing
Event sourcingEvent sourcing
Event sourcing
 
C sharp 8
C sharp 8C sharp 8
C sharp 8
 
Arquitectura en aplicaciones Angular y buenas practicas.
Arquitectura en aplicaciones Angular y buenas practicas.Arquitectura en aplicaciones Angular y buenas practicas.
Arquitectura en aplicaciones Angular y buenas practicas.
 
Un mundo sin if. generics al rescate
Un mundo sin if. generics al rescateUn mundo sin if. generics al rescate
Un mundo sin if. generics al rescate
 
Azure 360º para Desarrolaldores
Azure 360º para DesarrolaldoresAzure 360º para Desarrolaldores
Azure 360º para Desarrolaldores
 

Último

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Último (15)

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 

Linq - Introducción

Notas del editor

  1. 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
  2. Clases interfaces estructuras, Nos permite extender inclusive clases selladas que no podríamos extender de otra manera
  3. 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
  4. 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.
  5. Clases interfaces estructuras, Nos permite extender inclusive clases selladas que no podríamos extender de otra manera
  6. Surgio como una manera sencilla de trabajar con delegados
  7. El delegate ensucia la sintaxis, difícil de entender.
  8. Por detrás esto compila a código c# que utiliza los métodos de extensión