lunes, 5 de mayo de 2014

¿Cómo pasar un List<> (lista genérica) a un DataTable?

El día de hoy quiero compartirles la solución a este problema que se me presento.

En mi capa de acceso a datos estoy utilizando LinQ junto con Entities para hacer la consultas a la BD, todo funciona de maravilla sin embargo me tope con la necesidad de pasar una lista ó IEnumerable a un DataTable y preguntándole a mi tio Google encontré este método que me saco del problema.
 
Les comparto la información y espero que les sea de utilidad!


public static DataTable LINQToDataTable<T>(IEnumerable<T> varlist)
        {
            DataTable dtReturn = new DataTable();
            PropertyInfo[] oProps = null;

            if (varlist == null) return dtReturn;
            foreach (T rec in varlist)
            {
                if (oProps == null)
                {
                    oProps = ((Type)rec.GetType()).GetProperties();
                    foreach (PropertyInfo pi in oProps)
                    {
                        Type colType = pi.PropertyType;
                        if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition() == typeof(Nullable<>)))
                        {
                            colType = colType.GetGenericArguments()[0];
                        }
                        dtReturn.Columns.Add(new
                        DataColumn(pi.Name, colType));
                    }
                }
                DataRow dr = dtReturn.NewRow();
                foreach (PropertyInfo pi in oProps)
                {
                    dr[pi.Name] = pi.GetValue(rec, null) == null ? DBNull.Value : pi.GetValue(rec, null);
                }
                dtReturn.Rows.Add(dr);
            }
            return dtReturn;
        }

lunes, 26 de marzo de 2012

Creación de Servicios de Windows (C# .NET VS2010)

Pues resulta que la semana pasada tuve la necesidad de crear un servicio de windows el cual se encargará de enviar notificaciones via correo electrónico cada determinado tiempo.

En esta entrada les mostraré como crear un Servicio de Windows y su respectivo instalador, más adelante publicaré como enviar las notificaciones.

viernes, 16 de marzo de 2012

Licenciamiento de SQL Server 2008 R2

En todo el tiempo que llevo desarrollando nunca me había preocupado por las licencias del software que utilizaba, tal vez fue porque en mi rol de Programador solo tenia que enfocarme en entregar un producto que cumpliera con los requerimientos que me daban, pero ahora, con este nuevo rol de PM me han asignado la interesante tarea de crear todo el ambiente de desarrollo de aplicaciones .NET y he tenido que echarme un chapuzón con mi tío Google para poder entender como funciona.

Lo primero que investigué fue el licenciamiento para SQL Server 2008 R2 y encontré que dependiendo de la versión existen distintas formas de adquirir la licencia. A continuación enlisto 3 versiones que fueron las que más se adaptan a las necesidades de mi trabajo.