¿Cuál es la diferencia de IEnumerable e IQueryable utilizando LINQ en C# .Net?

En este video te mostrare cual es la diferencia de la interface IEnumerable y la interface IQueryable al momento de utilizar LINQ.

LINQ en C# .Net intermedio en 10 minutos, take, skip, select, union, count

En este video veremos LINQ a nivel intermedio, haremos ejercicios prácticos con los cuales te explicare como puedes utilizar las funciones take, skip, select, union y count en tus consultas de LINQ.

Código


  class Program
    {
        static void Main(string[] args)
        {
            List<Persona> lst = new List<Persona>() {
                new Persona() { Edad = 40, Nombre = "Pancho" },
                new Persona() { Edad = 30, Nombre = "Juan" },
                new Persona() { Edad = 11, Nombre = "Mario" },
                new Persona() { Edad = 18, Nombre = "Juana" },
                new Persona() { Edad = 6, Nombre = "Memo" },
            };

            List<Persona> lstSoloTexto = new List<Persona>() {
                 new Persona() { Edad = 30, Nombre = "Héctor" },
                 new Persona() { Edad = 38, Nombre = "Fernando" },
                 new Persona() { Edad = 12, Nombre = "Miguel" }

            };

            List<string> lstOrdenadosSoloNombres = (
                                                    from a in 
                                                        (from d in lst
                                                       select d )
                                                       .Union(
                                                        from d in lstSoloTexto
                                                        select d
                                                        )
                                                    orderby a.Nombre
                                                    select a.EdadYNombre
                                                    )
                                                   .ToList();

            int numerodepersonas = lstOrdenadosSoloNombres.Count;

            foreach (var Nombre in lstOrdenadosSoloNombres)
            {
                Console.WriteLine(Nombre);
            }

        }

        public class Persona
        {
            public int Edad { get; set; }
            public string Nombre { get; set; }

            public string EdadYNombre
            {
                get {
                    return Edad + " - " + Nombre;
                }
            }

        }
    }

Crear un piano con sonido en Javascript en menos de 10 minutos ?

En este video te mostrare como crear un piano en menos de 10 minutos utilizando javascript, sin la necesidad de tener un mp3 o wav, y solo con un navegador y código.

Piano (pícale a las teclas)

CSS


* { box-sizing:border-box; }

body{ margin:0; background:#222; }
ul {
	height:18.875em; width:34em;
  margin:5em auto; padding:3em 0 0 3em; position:relative; 
  border:1px solid #160801; border-radius:1em; 
  background:-webkit-gradient(linear, right bottom, left top, color-stop(0%,rgba(0,0,0,0.3)), color-stop(100%,rgba(0,0,0,0))), url('https://f.cl.ly/items/2q1f3t0C3R1b0g081w3n/vwood.png');
box-shadow:0 0 50px rgba(0,0,0,0.5) inset, 0 1px rgba(212,152,125,0.2) inset,0 5px 15px rgba(0,0,0,0.5); }
li { margin:0; padding:0; list-style:none; position:relative; float:left; }

ul .white {
	height:16em; width:4em; z-index:1;
	border-left:1px solid #bbb;
	border-bottom:1px solid #bbb;
	border-radius:0 0 5px 5px;
	box-shadow:-1px 0 0 rgba(255,255,255,0.8) inset, 0 0 5px #ccc inset, 0 0 3px rgba(0,0,0,0.2);
	background: linear-gradient(top, #eee 0%,#fff 100%);
}

ul .white:active {
	border-top:1px solid #777;
	border-left:1px solid #999;
	border-bottom:1px solid #999;
	box-shadow:2px 0 3px rgba(0,0,0,0.1) inset, -5px 5px 20px rgba(0,0,0,0.2) inset,0 0 3px rgba(0,0,0,0.2);
	background: linear-gradient(top, #fff 0%,#e9e9e9 100%);
}

.black {
	height:8em; width:2em; margin:0 0 0 -1em; z-index:2;
	border:1px solid #000;
	border-radius:0 0 3px 3px;
	box-shadow:-1px -1px 2px rgba(255,255,255,0.2) inset, 0 -5px 2px 3px rgba(0,0,0,0.6) inset, 0 2px 4px rgba(0,0,0,0.5);
	background:linear-gradient(45deg, #222 0%,#555 100%);
}

.black:active {
	box-shadow:-1px -1px 2px rgba(255,255,255,0.2) inset, 0 -2px 2px 3px rgba(0,0,0,0.6) inset, 0 1px 2px rgba(0,0,0,0.5);
	background:linear-gradient(left, #444 0%,#222 100%);
}

.a,.g,.f,.d,.c { margin:0 0 0 -1em;  }

ul li:first-child { border-radius:5px 0 5px 5px; }
ul li:last-child { border-radius:0 5px 5px 5px; }

HTML

<ul class="set">
        <li onclick=" jsNota(174.614)" class="white b"></li>
        <li onclick=" jsNota(184.997)" class="black as"></li>
        <li onclick=" jsNota(195.998)" class="white a"></li>
        <li onclick=" jsNota(207.652)" class="black gs"></li>
        <li onclick=" jsNota(220.000)" class="white g"></li>
        <li onclick=" jsNota(233.082)" class="black fs"></li>
        <li onclick=" jsNota(246.942)" class="white f"></li>
        <li onclick=" jsNota(261.626)" class="white e"></li>
        <li onclick=" jsNota(277.183)" class="black ds"></li>
        <li onclick=" jsNota(293.665)" class="white d"></li>
        <li onclick=" jsNota(311.127)" class="black cs"></li>
        <li onclick=" jsNota(329.628)" class="white c"></li>
</ul>

Javascript


var context= new AudioContext();

function jsNota(frecuencia){
        var o= context.createOscillator();
        g=context.createGain();
        o.connect(g);
        o.type="sawtooth";
        o.frequency.value=frecuencia;
        g.connect(context.destination);
        o.start(0);
        g.gain.exponentialRampToValueAtTime(0.00001,context.currentTime +1.5);
    }

No depender de internet para obtener cadena original cfdi 3.3 facturación electrónica C# .Net #7

En este video, te enseñare como no depender de las rutas que nos da el SAT para generar la cadena original, e incluyo todos los archivos necesarios xslt abajo para que los puedas descargar.

Archivos xslt: descargar

Curso complemento para recepción de pagos en C# .Net, Crear xml, timbrar | SAT cfdi 3.3, #3

En este video del curso para crear el complemento para recepción de pagos del cfdi 3.3, te enseñare como incorporar la clase que generamos en el video anterior en la clase Comprobante, y de esta manera crear el xml, para sellarlo y posteriormente timbrarlo.
También te explicare como debes armar el comprobante, ya que en este tipo de documento tiene validaciones en específico.

Video anterior: https://hdeleon.net/curso-complemento-para-recepcion-de-pagos-en-c-net-convertir-xsd-a-clases-de-c-sat-cfdi-3-3-2/

Código fuente: clic aquí.

Ejemplo de XML de complemento para recibo de pago ya timbrado, SAT, cfdi 3.3

Les adjunto un ejemplo de como sería un archivo con el complemento para la recepción de pago versión 1.0, como lo solicita el SAT.

¿Quieres aprender a programar el complemento de pago? Yo te enseño gratis dando clic aquí.

El siguiente xml ya esta timbrado y es valido.


<?xml version="1.0" encoding="ISO-8859-1"?>
<cfdi:Comprobante LugarExpedicion="20131" TipoDeComprobante="P" Total="0" Moneda="XXX" SubTotal="0" Certificado="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" NoCertificado="30001000000300023708" Sello="Vj+oPDouoVyXz0Gwh2wDsrukh2XwrwK9cZXOoh+RqFd6Otwdduz/RyFyvfR9Kio13IbCeLeLEVWZneik1CU/gwVAJ6+v/CBkd2AjL32JQsaWNitAqQ+kdgmtbSO0ZAoQazTcSyzYyk7n/14EQGlIwa66OjSS77WPkiZIhz8TFF5wCKir4i3tEMGfpuok1ZVR4EIpzVc9vu+CEnTPKhxd2wsPp6aUyaYTt3wvIrle+qmBlF9mkWMYai4obBq+BCp5HhmxUBFizafE+MAdj/M8y2WSobyg6PSD75pgfPas9l9mqX4919It5AqF3n7Iadvzo1hDK2vZAbwXAYShJ3gb3g==" Fecha="2018-09-18T00:06:39" Folio="1" Serie="H" Version="3.3" xsi:schemaLocation="http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv33.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital" xmlns:cfdi="http://www.sat.gob.mx/cfd/3">
	<cfdi:Emisor RegimenFiscal="605" Nombre="Una razón rh de cv" Rfc="LEGH870601DM7"/>
	<cfdi:Receptor Nombre="Pepe SA DE CV" Rfc="BIO091204LB1" UsoCFDI="P01"/>
	<cfdi:Conceptos>
		<cfdi:Concepto Importe="0" ValorUnitario="0" Descripcion="Pago" ClaveUnidad="ACT" Cantidad="1" ClaveProdServ="84111506"/>
	</cfdi:Conceptos>
	<cfdi:Complemento>
		<pago10:Pagos Version="1.0" xmlns:pago10="http://www.sat.gob.mx/Pagos">
			<pago10:Pago Monto="666" MonedaP="MXN" FormaDePagoP="01" FechaPago="2018-09-18T00:06:39">
				<pago10:DoctoRelacionado ImpPagado="600" MetodoDePagoDR="PUE" MonedaDR="MXN" IdDocumento="BEDC8964-7E57-4604-9968-7E01378E8706"/>
				<pago10:DoctoRelacionado ImpPagado="66" MetodoDePagoDR="PUE" MonedaDR="MXN" IdDocumento="BEDC8964-7E57-4604-9968-7E01378E8706"/>
			</pago10:Pago>
		</pago10:Pagos>
		<tfd:TimbreFiscalDigital Version="1.1" xsi:schemaLocation="http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/sitio_internet/cfd/TimbreFiscalDigital/TimbreFiscalDigitalv11.xsd" RfcProvCertif="EME000602QR9" SelloSAT="GICyRB9uhyZ1u6zuj8ZpxWM92gU2kDfmodwTvXoLy3ZMxrXWsqrF16tYfwBxK8eZDmXoxnKWTfoubcyt/DtgxDHDEyqRLf+oYashKByApRLRtIYTvivrm1XZCL6RuYlKyNwjrsk2vx4kJfk+/vCcy9pSYfG8sXHPPNg8yNsvpAdGpN2JF8b11QpbYukgaspkCh5hEcOuuu7/kM2p0sRC1bZMzMxAbD9QCgSoRkpMxnHbif5oY60pK68b3yp417ZtaKCLk2y/oetZGkpgNnImC6KDbqo4fuXDnfqxSrjEJW9UIMiyOW92sP8LljFXicGBjLTQMq1kGLyM7SeSAG7c/Q==" NoCertificadoSAT="20001000000300022323" SelloCFD="Vj+oPDouoVyXz0Gwh2wDsrukh2XwrwK9cZXOoh+RqFd6Otwdduz/RyFyvfR9Kio13IbCeLeLEVWZneik1CU/gwVAJ6+v/CBkd2AjL32JQsaWNitAqQ+kdgmtbSO0ZAoQazTcSyzYyk7n/14EQGlIwa66OjSS77WPkiZIhz8TFF5wCKir4i3tEMGfpuok1ZVR4EIpzVc9vu+CEnTPKhxd2wsPp6aUyaYTt3wvIrle+qmBlF9mkWMYai4obBq+BCp5HhmxUBFizafE+MAdj/M8y2WSobyg6PSD75pgfPas9l9mqX4919It5AqF3n7Iadvzo1hDK2vZAbwXAYShJ3gb3g==" FechaTimbrado="2018-09-18T00:06:44" UUID="FE5B2DD2-7E57-44E0-88C9-FB1AF0D17142"/>
	</cfdi:Complemento>
</cfdi:Comprobante>

Aprende a programar desde Cero, sin censura

Esta es una serie de videos que hice para que cualquier persona afín o no afín al desarrollo de software, pueda aprender a programar.

Aviso: el siguiente contenido contiene sátira y majaderías, ya que fue hecho con ese fin.

Curso de C# .Net

En este curso me enfoco a los aspectos de C# .Net directamente sin tanta teoria. El curso es grabado en vivo como los mejores programas de la televisión, en vivo y con errores.

Aquí no veras Programación Orientada a Objetos, que son las sentencias if o while, estos conceptos ya los debes conocer, e igual hay miles de sitios aburridos que te lo enseñan.

Yo me enfocare a enseñarte C# .Net de una manera original, directo al grano, todo con el fin de que te sirva como una herramienta real de trabajo.

A partir del video 2 comenzaremos a realizar un chat multiplataforma, el cual estará conectado por medio de un servicio web al cual se comunicara un sistema hecho en MVC y otro en Windows Form.

La lista de videos esta ordenada conforme van saliendo y se encuentran aquí abajo. (Igual puedes dar clic a uno y seguir la lista de reproducción)

Código del curso (se actualiza cada que hay nuevos videos): clic aquí

1. Introducción

2. Entornos y arquitectura (Windows Form, MVC, MVC Api)

3. Publicación y configuración de IIS

4. Json a Objeto, recibir datos por POST

5. Serializar y deserializar objetos, generics, enviar datos por POST

6. Creación de librerías, ¿Que es el administrador de paquetes NuGet?, appsettings

7. Vistas en MVC .Net, Razor

8. Validaciones con DataAnnotatios en MVC .Net

9. Autentificación en MVC API .Net

10. Autentificación en MVC .Net utilizando servicio web, filtros, seguridad

11. Solicitudes remotas en tiempo real con SignalR

12. Verificar Access Token, regresar listado en json

13. Utilizar if y try catch en LINQ con Lambda

14. Enviar y recibir datos en tiempo real con SignalR

15. Seguridad y grupos en SignalR

16. Introducción a Windows Forms

17. Sesiones en windows forms

18. Creación de elementos dinámicamente en windows forms

Curso complemento para recepción de pagos en C# .Net, Convertir XSD a clases de C#, SAT cfdi 3.3, #2

En este video te enseñare como convertir los xsd otorgados por el SAT a clases de C# .Net de una manera automática, limpia y en segundos.

Este curso esta hecho para que puedas crear el xml 3.3 con el complemento de pago en C# .Net.

Código facturación electrónica: clic aquí

Código de este video: clic aquí

Video anterior #1: https://www.youtube.com/watch?v=9qcD51EZ-Zw