none
Cargar un combobox con linq con el valueMember de dos campos RRS feed

  • Pregunta

  • Hola todos, estoy empezando con linq y me surge una duda que no se resolver, os cuento:

    Quiero tener un combobox donde el valueMember sea de dos campos. Si lo hago de forma tradicional, es decir, mediante una consulta SQL, es tan facil, como crear un campo concatenado en la SELECT, por ejemplo:

    SELECT nombre, apellido1, apellido2, apellido1 + ' ' + apellido2 + ', ' + nombre AS nombreCompleto

    FROM .......

    Pues bien, me gustaria saber si se puede hacer algo parecido mediante linq.

    Gracias por adelanto, Jorge

    jueves, 25 de octubre de 2012 22:38

Respuestas

  • puedes ver la clase generada en el diseñador de linq to sql ? puedes ver el codigo generado por el VS

    linq to sql ademas de tener un diseñador visual genera codigo, seguramente la clase que genere la define como partial, si es asi podrias extener la funcionalidad de ese metodo para agregar la propiedad que comento

    valida si puede localizar el codigo que linq to sql genera

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 26 de octubre de 2012 13:23

Todas las respuestas

  • porque no se podria

    define una propiedad del tipo read only en la clase que recuperas para cargar el grid que una los campos

    public class Class1{

         public string PropCompuesta{

              get{return string.Format("{0}  {1}", this.Prop1, this.Prop2);}

        }

    }

    luego usas

    combobox1.ValueMember = "PropCompuesta";

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


    viernes, 26 de octubre de 2012 2:38
  • Leandro, no entiendo muy bien lo que me quieres decir.

    Cómo me temia que no se pudiera hacer, lo he hecho de forma alternativa, te explico:

    Cargo con LINQ una lista de mis objetos y después recorro esa lista de objetos para crear un DataTable y por cada DataRow seria el id y los dos campos que me interesa concatenar.

    Despues enlazo ese DataTable al comboBox y listo, funciona, pero me gustaria si hay otra forma mas cómoda de hacerlo.

    Un saludo, Jorge

    viernes, 26 de octubre de 2012 6:18
  • Cargo con LINQ una lista de mis objetos y después recorro esa lista de objetos para crear un DataTable y por cada DataRow seria el id y los dos campos que me interesa concatenar.

    nooo si estas con linq olvidate de los datatable dataset y todo lo que tenga que ver por ese lado usa objetos

    si haces eso avanzas un paso para mejorar y retorcedes 10 hacia un peor codigo

    debes extender la clase que usas en linq para agregarle funcionalidad, si haces lo que planteas entonces vuelve a los dataset tipados y demas olvidante de linq para que lo suas si despues vuelves hacia atras eso no tiene sentido

    estas usando linq to sql, no ?

    Nota: recuerda mencionar en que lenguaje programas


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 26 de octubre de 2012 6:37
  • Entiendo prohibido DataSet, DataTable y demás "Data..."

    Me quiero poner las pilas con  LINQ, pero estoy empezando, por eso tiré por el camino conocido.

    Perdona por no ponerte el lenguaje de programación: C# y utilizo LINQ to SQL y el entorne de trabajo es el VS2010.

    Si me pudieras poner un ejemplo, te lo agradeceria, porque la verdad, estoy un poco verde en este tema

    viernes, 26 de octubre de 2012 6:46
  • puedes ver la clase generada en el diseñador de linq to sql ? puedes ver el codigo generado por el VS

    linq to sql ademas de tener un diseñador visual genera codigo, seguramente la clase que genere la define como partial, si es asi podrias extener la funcionalidad de ese metodo para agregar la propiedad que comento

    valida si puede localizar el codigo que linq to sql genera

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 26 de octubre de 2012 13:23
  • Gracias Leandro por tu ayuda, la verdad que todos tus comentarios me han servido de mucho.

    He quitado todo lo referente a Datatable y como bien me comentaste la clase es partial, asi q le he agregado una propiedad a la clase para mis campos multiples que deseo concatenar para el valueMember de comboBox.

    Un saludo y de nuevo gracias por tu ayuda y tiempo, Jorge

    lunes, 29 de octubre de 2012 7:35