Expresiones lambda en un ejemplo real en C# .Net, programando sin utilizar if
Вставка
- Опубліковано 9 лис 2024
- En este video te mostrare como puedes utilizar las expresiones lambda y encapzular su funcionalidad en una clase para que puedas reutilizarlas, no utilizaremos la sentencia if en este video.
Si quieres apoyarme y darme para una cerveza puedes hacerlo por aquí: paypal.me/Hecto...
Puedes apoyarme desde 0.5 USD al mes uniéndote como miembro al canal aquí: / @hdeleonnet
También puedes vía patreon: / powerhdeleon
Todos mis podcasts: • Podcast #1 - ¿Cuál es ...
Curso de MVC .Net: • Curso de MVC .Net C#| ...
Curso de MVC Api .Net: • Curso de MVC API .Net ...
Curso de facturación electrónica en c# .Net: • ¿Cómo convertir archiv...
Todos mis videos sobre facturación electrónica: • ¿Cómo convertir archiv...
La falta de respeto tanto a mí como a cualquier otra persona y el SPAM son razones de bloqueo en mi canal.
"Copyright Disclaimer Under Section 107 of the Copyright Act 1976, allowance is made for "fair use" for purposes such as criticism, comment, news reporting, teaching, scholarship, and research. Fair use is a use permitted by copyright statute that might otherwise be infringing. Non-profit, educational or personal use tips the balance in favor of fair use"
---------------------------------------------------------------------------------------------------------------
Sigueme en twitter ⇒ / powerhdeleon
Sigueme en facebook ⇒ / hdeleon666
Mi Sitio web ⇒ hdeleon.net
#programación #dotnet #csharp
Si te ha gustado el video, puedes apoyarme dejando un pulgar arriba y compartiendo en tus redes sociales
Estas clases son magistrales. no tienen precio.
Eres de los pocos canales a los que me he suscrito que de verdad valen la pena
El video es excelente, el codigo que queda luego es muy elegante y conciso. Por lo que veo esta funcionalidad la ofrece y con esteroides el paquete FluentValidations.
Un colega me hice el insection de no usar if hace ya unos meses, desde entonces me he sentido avergonzado de cada if que he colocado. No obstante con esta manera creo que ya entendi a lo que se refería. Muchas gracias
Como me encanta este canal , gracias , este video me re sirvio
Gracias Héctor, me agrada mucho tu canal y me gusta cuando tocas temas más avanzados, ya que de lo básico ya hay mucho, pero ya de cosas más intermedias o avanzadas escasa en internet y más en español
Un saludo desde Colombia
Hermoso video Hector, por fin me voy a sacar la costumbre de meter 90 if para validar :p
La verdad Héctor muy buenos videos los tuyos un saludo
Súper me encanta, sabes yo siempre intento ingeniármelas con lo poco que sé para escribir lo menos posible pero con las E.L. Pff me solucionará la vida en muchos sentidos
Explica super bien. Lo felicito! Excelentes videos. Tengo 21 años programando con tecnología Microsoft, y siempre es bueno aprender y refrescar.
Maestro de Leon, antes que nada déjeme enviarle un respeto como dijera el Tlatoani Carlos Ballarta, y decirle que gracias a usted yo he podido adquirir nuevas habilidades y muchos trucos que me han servido en mi diario que hacer por he querido siempre poder invitarlo a una muy merecida cerveza, pero como se me hace por el momento viajar a las tierras mexicanas me voy a suscribir a su canal como semi-senior, muchas gracias por compartir sus conocimientos con todo el proletariado y un saludo desde Panamá de un Salvadoreño que ama mucho los tacos
Muchas gracias a ti Jesús
Amigo muy interesante tu video
Bastante funcional y tengo q admitir que hoy aprendí algo nuevo.
Manita arriba (Y) y Saludos desde CR :)
Gracias hermano, supongo que por debajo es así como funciona el paquete de FluentValidation, gran explicación
Excelente video me cae muy bienque los ejemplos sean con bebidas, en especial si es cerveza, le da un toque mas refrescante e incentivador al video.
excelente hace años no via un post asi. gracias por tu aporte
Muy buena la explicación. Gracias
Héctor para este caso en ves de un Where y el Count usar el Any es mucho mas claro. Y por otro lado, crear dos clases para la validacion no me parece apropiado, teneiendo en cuenta que el metodo Validate podría caber tranquilamente en la responsabilidad del modulo (clase) BeerValidate. Pero despues cuando usas el genérico si queda apropiado la separacion.
A muchos le abre un poco la cabeza estos ejemplos!
sigue así man, y muchas gracias por compartir!
Aguante las expresiones lambda, hasta ahora solo había abusado de linq, linq, linq se pueden hacer mil cosas, pero poder crear lo que quieras con lambda es hermoso. Gracias por compartir!
Excelente presentación. Ha sido muy útil. Gracias!
Genial, deberías seguir subiendo este tipo de videos de nivel intermedio y/o avanzado que son escasos.
Muy buen video, en general excelente canal, llegue aca por C# Sharp Guy 💪👏
Diioooos, nueov suscriptor te lo haz ganado excelente material
Eres el mejor Bro! Excelente video
Perfectamente bien Utilizado expression Lamda.
Muy bueno el video, las primeras dos expresiones en el array de validations son redundantes porque ya se contemplan en las dos de abajo
Excelentes videos tenés amigo. Genial esta explicación. Saludos.
Muy bueno, sigue subiendo mas videos así!!!
Crack!!!
Fantástico Hector, tanto el tema como la explicación. Soy algo novato en C# y tengo exactamente un método que valida 17 columnas de un Excel. Pero necesito retornar el error, el mensaje de error y el valor incorrecto. En la respuesta a Adam Mendez hablas de algo como esto: claro se puede, haces un objeto respuesta y lo manejas con Func
public class Respuesta{
public bool Result{get;set;}
public string Message{get;set;}
}
Pero no entiendo en donde lo uso, que pena pero soy algo novato. Gracias
quiza haga un video más avanzado para explicarlo
excelente video, muy bueno.
Me encantan tus videos !!
Excelente video aula!
Excelente video Héctor. Felicitaciones!
Excelente ejemplo 👌🏻 ¡crack !
Que bonito código.
Gracias hdeleon, muy bueno excelente gracias!!
por supuesto tienes mi like, muy bueno excelente Hector!!!! gracias!!
Mind blown 🤟🏼
Esta chingonsisimo este video
Esooooooooooo Super Crackkkkkk. Muchas Gracias
Excelente profesor!
Chingon este video, más vídeos asi
Hola, muchas gracias por tus excelentes expliciones.
Me surge una duda con la utilización de esa clase de validaciones, cómo podría retornar un string con los campos que han fallado las validaciones?
Muy Bueno
pa genial jajajajaaajaj expectacular Hectorrrrr ajjajajaajj me encanto esto.
Muy buen video, una pregunta, que pasa si tiene un set de validaciones y quieres asignarle a cada validación un código y mensaje de error (como los códigos y mensajes de error del XML que asigna el SAT a las validaciones de cada complemento de un CFDI ) por si no se cumple y obtener ese código y mensaje de error después de la validación en caso de fallar. Gracias y saludos, me encanta tu canal
claro se puede, haces un objeto respuesta y lo manejas con Func
public class Respuesta{
public bool Result{get;set;}
public string Message{get;set;}
}
Gracias ❤️
Eres un crack amigo 👌🙏🏽🙌🏾
excelente, buenísimo video !
gracias a tus videos ya no hago tantos espagueti XD
Super tu video pero me gustaría saber por cual función falló, es decir, devolver un mensaje por ejemplo: el número de cacteres no debe ser menor a 10
Excelente. Gracias
Excelente video, Saludos.
Buen video 👍
Me encanta tu explicación bro... tienes cursos en alguna plataforma?
Claro, ahora mismo están en descuento: hdeleon.net/cursos-premium/
exelente muchas gracias, porfa un video para validar las DataAnotations si se puede
ua-cam.com/video/rCYGd3_ADn4/v-deo.html
@@hdeleonnet y como seria sin utilizar mvc por ejemplo en wpf
Excelente video Hector, para los que queremos adentrarnos cada vez mas en la programación funcional está perfecto y super explicado!!
Ahora una consulta, que pasa si yo quiero retroalimentar el error de la expresión lambda?
Es decir, si por ejemplo, name != null mostrarle un msj al usuario que diga que debe escribirlo, es decir una retroalimentación al usuario que vaya desde el método static validations?
Ya no usas predicate, si no un func
Está muy interesante, pero como podría saber cuál validación falló y poder devolver un mensaje personalizado????
Daniel, si lo descubriste compártelo. Es lo primero que se me ha pasado por la cabeza cuando he visto el vídeo.
Pensando en alto se me ocurre enviar un string con el nombre del error en vez de un true o un false, podría funcionar, no?
@@bilbo88 Mmm pues no hice las pruebas la verdad, pero desde el primer momento te dice que un predicado solo devuelve valores boleanos, asi que no creo se pueda devolver un string :(
Hola Hector, excelente video junto con el anterior video, me cae de perlas este video ya que estoy desarrollando un sistema de carga de datos desde json y tengo que hacer validaciones de (tipos de datos) valores; globalmente Predicate retorna True/False entre todas las validaciones, ¿Cómo se pudiera retornar y con qué método (creería con el Action pero como no retorna nada...) saber cuál elemento de la colección del modelo produjo el error de validación?, gracias por todo.
Voy con eso en breve
Eres un cracksote gracias por tanta enseñanza bro ahi luego que se armen las cheves xd!
se puede usar en metodo .Any() en vez de hacer un ToList, Where y Count
Si pero igual necesitas tolist
Excelente explicación Héctor, pero como podría hacer para obtener cual fue el que dio falso.
Regresas un list de un tipo objeto que tengas resultado bool y mensaje string. en lugar de bool, y evaluas fuera de la función con count si deseas ver si uno fallo o foreach si deseas mostrar los messages
Buenisima man!
Dejen likes amigos
Una pregunta que ventajas y desventajas tienes al utilizar Typescript en React ? me gustaría saber tu opinión graciias : )
Mejor control de código, maneja interfaces con lo cual puedes aplicar patrones de mejor manera que son ts. A parte intellisense le ayudas a que te corrija y eso ahorra tiempo, saber que algo está mal antes de ejecutarlo es ganancia.
Crack
Una consulta, mejora la performance usar solo lambda sin if?
Nunca había visto usar las lambdas así, ¡ahí tienes mi like y sub! A ver que más cosas descubro por aquí :)
Por cierto, ¿en lugar del " .Where().Count() == 0 " no sería mejor aprovecharse del " .Any() " ?
Any si
Eso mismo me sugirió el IDE jajaja
Venia buscando cobre y encontré oro, tendras algo relacionado a wrapper classes en c#?
Por ahora no, espero pronto hacer algo con wrapper que sean intermediarios de cosas utiles de C++
Se puede usar Any en vez del Where
mucha abstraccionn😂👏👏👏
Una consulta Hector, por lo que he visto en tus videos y en los lives dices que trabajas como freelance o algo así, me causa curiosidad saber si cada vez que haces un proyecto también creas test unitarios y todos esos pasos para llegar a producción. ¿Lo haces siempre?, ¿Depende del presupuesto? o de la complejidad del proyecto?. ojala puedas responderme Que tengas un buen día
Trabajo en mis propios proyectos, y siempre tienen pruebas unitarias todos los que he hecho desde el 2018
@@hdeleonnet Muchas gracias por responder. Realmente espero que te vaya super, tu contenido es excelente
Por qué tienes varias versiones de visual y sql?
¿Se puede romper el where?
programando sin utilizar if. pensé que te referias a usar un especie de filter, eso hago yo para evitar demasiados if pero en javascript.
En linq tenermos la foncion Any(...) que equivale a Where(...).Count() >= 0
Hola cómo pudiera crear una función que busque y desabilite todos los botones de un formulario
Sinceramente prefiero usar if. Aunque como dices es interesante.
Que tipo de interfaces se usan para internet de las cosas?
Displays
Me aparecio este video pero no se C# sino Java, pero me quede por curiosidad en realidad se parecen mucho los lenguajes, aunque me gusta mas la => de c# que la -> de java
Esto es muy parecido a FluentValidation no?
Estimado... hay un error... para convertir a lista se usa el System.Linq, no el System.Collections.Generics
Tienes razón
te refieres cuando invocamos .Tolist() ?
@@MrElmarqueli si....
daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamn
Damnnnn
Y yo q pensaba q sabia lamda !
Que benefició tiene usar lambdas ?
"¿Esponja enloqueciste?"
Saludos Hdeleon , me puedes apoyar a que esta clase se pueda reutilizar, así como la case de DATAvalidator?
**EL obj FAMILIAS se parametro
public class DATAvallidation
{
public static readonly Predicate[] validations =
{
(d) => d.NombreFamilia != null,
(d) => d.NombreFamilia != null && d.NombreFamilia.Count() < 10,
};
}
public class DATAvalidator
{
public static bool validate(T data, params Predicate[] validations) =>
validations.ToList().Where(d =>
{
return !d(data);
}).Count() == 0;
}
No utilizo if pero si utilizo X > 5 ? console.log("Mayor que 5, es un buen chiste") : console.log("este chiste da pena");
Solo los programadores de javascript lo entenderán xd
no te pases. El if es la vida.
Hola de nuevo ajajjaja le di tanto que lo lleve por le lado logico ajajajjaj haber que les parece:
public static bool Validate(List Objet, params Predicate[] validations)
{
bool Resultado =true; // aca declaro la variable como true
foreach (T item in Objet)
{
Resultado = Resultado ^ (validations.ToList().Where(d => !d(item)).Count() == 0); // y aca hago una operacion logica
}
return Resultado;
}
siguiendo esta logica:
Console.WriteLine(true ^ true); // output: False
Console.WriteLine(true ^ false); // output: True
Console.WriteLine(false ^ true); // output: True
Console.WriteLine(false ^ false); // output: False
Y sin if!!!!!! jajajaajj gracias a tus videos se aprende enormemente agradecido de que existas ajaja salu2.
Como ejecutas el metodo ?
result = Validate(obj, ?)
@@wavasque Hola, el tema que el código que puse se basa en lo que explica Héctor, este código es uno personal usando lo explicado por él, donde tu pones el signo de (?) ahí va el (params Predicate[] validations) que es lo que explica Héctor en el video cuando crea la clase Validations en la clase BeerValidations, ahi en vez de el signo de ? pones la BeerValidations class, Estudia bien el video el lo explica muy bien. Solo luego tienes que adaptar el concepto la ida a tu proyecto.
csharpbeerrock
Se me terminó el cerebro
Hola Héctor haber con esto le estoy buscando la vuelta para adaptarlo a tu logica pero no doy con la tecla sin usar un if:
public static bool Validate(List Objet, params Predicate[] validations)
{
bool Resultado = false;
foreach (T item in Objet)
{
Resultado = validations.ToList().Where(d => !d(item)).Count() == 0;
}
return Resultado;
}
la cosa que esto no funca. tendria que hacer cono un if dentro del foreach para salir del bucle en caso de que en algun item me de false pero no quiero usar if ajjajajajjj se te ocurre algo?
Usa el Any
Ya tienen if dentro las expresiones Lambda.
Muy bueno