¿Cómo proyectar solo algunas propiedades de una consulta LINQ?

publicado por: Anonymous

Hola estoy trabajando con Entity Framework Code First, el entorno es escritorio(Windows Forms) y mi consulta es la siguiente.

Necesito cargar un DataGridView con tan solo dos propiedades, id y descripción ¿se puede hacer este select con linq?

La idea es cargar solo esas dos propiedades de la entidad, no traerme toda la entidad completa.
¿como se puede hacer mediante linq, usando IEnumerable para traer una lista?

public IEnumerable<Proveedor> GetProveedor()
{
    //TO DO....
}

Es solo una query que con lo que me ofrece Leandro ya esta solucionado, solo que quería evitar crear una clase ProveedorExtend donde ponga mis propiedades ProveedorId, RazonSocial Con esto lograría solucionar que no me traiga el resto de columnas al DGV

solución

>>necesito cargar un DataGridView con tan solo dos propiedades id y descripción, se puede hacer este select con linq?

podrias definir estos campos en el select de linq

List<xxClass> result = (from item in db.Entidad
                       select new xxClass(){
                           id = item.Id,
                           descripcion = item.descripcion
                       }).ToList();

por supuesto define la clase con estas dos propiedades

public class xxClass{
      public int Id {get;set;}
      public string descripcion {get;set;}
}

el List<> implementa IEnumerable<>

>>¿no es necesario hacer una clase extend con esas dos propiedades? es mas eso es lo que quiero evitar.

podrias aplicar herencia entre las clases

public class xxClassBase{
      public int Id {get;set;}
      public string descripcion {get;set;}
}

public class xxClass : xxClassBase {
      public int Prop1{get;set;}
      public string Prop2{get;set;}
}

En EF mapeas la entidad completa, pero cuando realizas el linq solo recuperas las dos que son de utilidad

Tambien podrias implementar

[Entity Framework][Code First] Dividir Tabla (Table Splitting)

con esto puedes separar la tabla en entidades diferenciando las propiedades.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *