none
Cláusula where en dynamic linq RRS feed

  • Pregunta

  • <section class="comment-content comment">

    Quería saber si hay alguna forma de sustituir al let en dynamic linq. Tengo una clase, la cual persisto, que tiene un atributo que es una lista de objetos de otra clase, la cual también persisto. Con linq la consulta sería:

    return m in contexto.SetMensajes
    let atrs = m.Atributos
    from a in atrs
    where a.Nombre == nombre
    select m

    ¿Puedo hacer esto con dynamic linq? He estado buscando pero no encuentro nada.

    ¡Gracias!

    Saludos

    </section>
    jueves, 22 de noviembre de 2012 18:26

Todas las respuestas

  • Hola Valemanueli,

    No entiendo este linq, ¿seguro que no quieres hacer esto? Aunque lo que comento no tiene nada que ver con dynamic linq

    return (
     from m in contexto.SetMensajes
     from a in m.Atributos
     where a.Nombre == nombre
     select m
    );

    Ve también con cuidado con el == ya que tiene en cuenta las mayúsculas y minúsculas. La mayoria de las veces se quiere una comparación case-insensitive que se consigue con el string.Compare(...)

    Un saludo y espero haberte ayudado,


    @XaviPaper
    http://geeks.ms/blogs/xavipaper

    miércoles, 28 de noviembre de 2012 1:00
  • Hola.

    Pues no entiendo que desearía hacer con Dynamic Linq, si Let lo usas para asignar el resultado de una "subconsulta".

    Si entiendo bien lo que deseas hacer, el Dynamic Linq debería ir en la clausula where() del la "sub-colección"

    Algo de la forma:

    var result = SetMensajes.Select(m=> new{m, atrs = m.Atributos.Where("DynamicLinq")}).... ;

    No sé si es lo que buscas pero es mas o menos como te entiendo.

    Atento a tu respuesta.

    Saludos.


    Nicolás Herrera
    Bogotá - Colombia
    BLOG | @nicolocodev
    "Daría todo lo que sé, por la mitad de lo que ignoro." Rene Descartes

    martes, 4 de diciembre de 2012 3:08