none
Cargar Dataset Tipado con LinQ RRS feed

  • Pregunta

  • Buenas noches, quisiera saber como poder llenar un dataset tipado con una consulta de Linq, tengo la conculta de linq y no se como pasarle esos datos a un dataset tipado, ya que este lo necesito para presentar un reporte de crystal report. 
    Aqui les dejo la consulta (este es un sp que esta en la base de datos), no se en que punto debo pasar los datos al dataset.

    using (var db = new DB_GestionEntities())
                {
                    var query = from p in db.sp_Clientes_GetALL()
                                select p;
                    query.CopyToDataTable(oClientes.Clientes_GetALL);
                }

    Saludos,


    Saludos, Gastón Marengo

    miércoles, 9 de mayo de 2018 3:58

Todas las respuestas

  • hola

    creo que deberias ver este articulo

    Creación de un objeto DataTable a partir de una consulta

    recuerda que debes asignar la repsuesta del metodo

    DataTable dt = query.CopyToDataTable<DataRow>();

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 9 de mayo de 2018 15:35
  • Buenas noches, quisiera saber como poder llenar un dataset tipado con una consulta de Linq, tengo la conculta de linq y no se como pasarle esos datos a un dataset tipado, ya que este lo necesito para presentar un reporte de crystal report. 
    Aqui les dejo la consulta (este es un sp que esta en la base de datos), no se en que punto debo pasar los datos al dataset.

    using (var db = new DB_GestionEntities()) { var query = from p in db.sp_Clientes_GetALL() select p;

    //p_Clientes_GetALL() <-- este es un store procedure
    // corrijo aca!

    // no se como retornar el resultado de la consulta y llenar un dataset tipado //query.CopyToDataTable(oClientes.Clientes_GetALL); }


    Saludos,


    Saludos, Gastón Marengo



    Saludos, Gastón Marengo


    miércoles, 9 de mayo de 2018 17:22
  • no entendi, cual seria la correcion ? porque no veo que asignaras la salida del linq a un datatable

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 9 de mayo de 2018 20:44
  • Hola Leandro, muchas gracias por tu repuesta, claro la correccion es esa, que no le asigno nada, porque no se como pasarle los datos de la consulta a un dataset tipado.



    Saludos, Gastón Marengo

    miércoles, 9 de mayo de 2018 21:32
  • Buenos dias, vuelvo a preguntar, capaz no realice bien la pregunta anteriormente.

    Necesito llenar un dataset tipado con esta consulta de Linq. 

    using (var db = new DB_GestionEntities())
                {
                    var query = from p in db.sp_Clientes_GetALL()
                                select p;                
                }

    Desde ya muchas gracias


    Saludos, Gastón Marengo

    martes, 15 de mayo de 2018 10:44
  • Hola Gastón.

    Puedes hacerlo así.

    Clase de objeto tipo

    class Clientes
        {
    /* para el ejemplo objeto Customers de la base de datos northwin */
            public string CustormerId { get; set; }
            public string CompanyName { get; set; }
            public string ContactName { get; set; }
            public string ContacTitle { get; set; }
            public string Address { get; set; }
            public string City { get; set; }
            public string Region { get; set; }
            public string PostalCode { get; set; }
            public string Country { get; set; }
            public string Phone { get; set; }
            public string Fax { get; set; }
        }


    Clase para convertir objetos T

            public static DataTable Convert(List<T> items)
            {
                // Instancia del objeto a devolver
                DataTable returnValue = new DataTable();
                // Información del tipo de datos de los elementos del List
                Type itemsType = typeof(T);
                // Mediante reflexion se recorren las propiedades del objeto
                foreach (PropertyInfo prop in itemsType.GetProperties())
                {
                    // Crearmos y agregamos una columna por cada propiedad de la entidad
                    DataColumn column = new DataColumn(prop.Name);
                    column.DataType = prop.PropertyType;
                    returnValue.Columns.Add(column);
                }
    
                int j;
                // ahora recorremos la colección para guardar los datos
                foreach (T item in items)
                {
                    j = 0;
                    object[] newRow = new object[returnValue.Columns.Count];
                    foreach (PropertyInfo prop in itemsType.GetProperties())
                    {
                        newRow[j] = prop.GetValue(item, null);
                        j++;
                    }
                    returnValue.Rows.Add(newRow);
                }
                return returnValue;
            }
    
    

    La invocacion de acuerdo a tu query

    Customers c = new Customers(); /*Dataset tipado en base a Customers de Northwin */
    DataTable dt =null;
    using (var db = new DB_GestionEntities())
                {
                    var query = (from p in db.sp_Clientes_GetALL()
                                select p);                
     dt=Convertidor<Clientes>.Convert(query.ToList();
                }
    c.Tables.Add(dt);
    /*Agregamos la tabla al dataset */

    https://social.msdn.microsoft.com/Forums/es-ES/cd54d409-6d3a-47ab-b222-ab315f6a4779/rellenar-un-dataset-con-linq-to-sql?forum=vbes

    Un saludo

    martes, 15 de mayo de 2018 15:11
  • Muchas Gracias por tu respuesta, voy a implementarlo a ver como resulta.

    Saludos


    Saludos, Gastón Marengo

    martes, 15 de mayo de 2018 15:40