Principales respuestas
Cargar un combobox con linq con el valueMember de dos campos

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
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
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- Editado Leandro TuttiniMVP 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
-
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 -
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
-
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 -
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