none
LINQ. Es posible Serializar una proyeccion de LINQ para utilizarla en un servicio WCF. RRS feed

  • Pregunta

  • Para realizar un servicio WCF es necesario trasladar las entidades (Entity Framework) en formato XML, definiendo estas entidades con un datacontract y un datamember para que se puedan serializar. Es posible crear proyecciones que también sean serializables?.

     

    Un saludo y gracias.
    martes, 9 de agosto de 2011 12:57

Todas las respuestas

  • hola

    por proyeccion te refieres a que el resultado lo dejas en una variable anonima ?

    si es asi no creo que puedas, pero si defines una entidad concreta y con linq cargas instancias de esta, ahi si puedes

     

    o sea serialziar esto

    var result = from item in list

                     where ite.edad > 40

                      select item;

    no se podria

    pero esto

    List<Persona> result = (from item in list

                                     where ite.edad > 40

                                     select item).ToList();

     

    ahi si se podria

     

    saludoas


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 9 de agosto de 2011 14:34
  • Por proyeccion me refiero a hacer una select de determinados campos, si que devuelve resultados, pero estos no es posible serializarlos. O por lo menos no he encontrado el modo.

    Un ejemplo de proyección sería este: var result = from item in list where ite.edad>40 select new {campo1, campo2};

    Si, definiendo la clase con los campos 1 y 2 si que se podría serializar, pero quiero evitar esto porque ya tengo las clases.

     

    miércoles, 10 de agosto de 2011 6:24
  • claro es lo que em imagine un resultado en var no se puede serializar

    por eso debes crear la clase resultanteo usar una que ya tengas, pero son clases definidas las que debes cargar

     

    public class Datos{

      public string campo1{get; set;}

      public string campo2{get; set;}

    }

     

    List<Datos> result = (from item in list

                                 where ite.edad>40

                                  select new Datos { campo1 = campo1, campo2 = campo2}).ToList();

     

    esto si podras serializarlo

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 10 de agosto de 2011 12:05
  • Si, en efecto es así. Gracias por tu respuesta. Un saludo.
    miércoles, 10 de agosto de 2011 12:11