none
Dynamic Query en LinQ con join RRS feed

  • Pregunta

  • Buenos días, recientemente había hecho una pregunta pero decidí cerrarla e iniciar una nueva ya que mi solución me llevo a otra duda nueva que necesito resolver y espero contar con su amable colaboración. La pregunta es la siguiente:

    Quiero saber como poder hacer una consulta como esta:

    var dg_valor2 = from x in dm.proy_presup_t
                                join y in dm.proy_sclasif on x.co_sclasif equals y.co_sclasif                            
                                select new { x.co_sclasif, y.des_sclasif };

    pero usando una cadena de texto proveniente de un StringBuilder que pasa por un ciclo (foreach) para armarse, pero en conclusión si puedo incluir un Join pudiera saolventar mi problema, he buscado en muchas paginas sobre el tema pero solo consigo querys sencillos sin join como este que hice y funciona bien:

     

    var dg_valor = (dm.proy_presup_t)
                               .Where("co_proy ==  @0 ", lab_coproy.Content)
                               .Select("new(co_proy,co_sclasif)"); 

    Pero tengo que anidarla con otra tabla para sacar un campo como el ejemplo de arriba, gracias de antemano.


    C. Zapata

    martes, 29 de mayo de 2012 12:46

Todas las respuestas

  • hola

    viendo el tema parece que no esta implementado

    How to create a dynamic Linq Join extension method

    pero si hay algo que podrias agregar a la clase de linq dynamics

    no se si sabias pero la clase puede descargar al de aqui

    http://code.msdn.microsoft.com/DynamicQuery-f65f6a4d

    veras en el codigo que hay un Dynamic.cs  esa es toda la implementacion, alli puede poner el metodo que comenta el primer link

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


    miércoles, 30 de mayo de 2012 5:54
  • Hola Leonardo, muchas gracias como siempre me solventaste el problema principal. Ya logre armas mi query dynamico gracias a tu apoyo, ahora tengo una duda mas a ver si puedo contar nuevamente contigo y es lo siguiente:

    1.- Tengo un select que uso para poder saber cuantas filas voy a meter en un datagrid

    2.- Armo otro select para establecer las columnas de mi datagrid

    3.- Recorro el segundo select con un  foreach y armo la consulta dinamica 

    Todo esto esta perfecto pero ahora necesito cargar esa ultima consulta a mi Datagrid asi  dg_presup.ItemsSource = query;

    pero cuando reviso mi datagrid en cada columne me aparece la coleccion completa de los datos ejempo:

    {co_sclasif=P01 , des_sclasif=PRUEBA 001 CAMBIOS, monto3=0,000000, monto4=0,000000, monto5=0,000000, monto6=0,000000}

    Lo que quiero hacer es que cada columna tenga su binding, asi defino cada columna:

    dg_presup.Columns.Add(new DataGridTextColumn()); //Define las caracteristicas de cada columna
                ((DataGridTextColumn)dg_presup.Columns[0]).Binding = new Binding();
                ((DataGridTextColumn)dg_presup.Columns[0]).Header = "Código";
                ((DataGridTextColumn)dg_presup.Columns[0]).Width = 100;
                ((DataGridTextColumn)dg_presup.Columns[0]).IsReadOnly = true;

    pero no se como decirle por ejemplo a la columna 1 colocarle el contenido de co_sclasif, a la 2 des_sclasif etc...

    No lo puedo hacer por el XAML ya que a pesar de que esta con WPF el DataGrid tiene que ser dinamico y no fijas sus columnas y sus filas.

    Gracias de antemano y si no me explico bien dime y te doy mas detalles.







    C. Zapata

    miércoles, 30 de mayo de 2012 23:49