Foros del Web » Programación para mayores de 30 ;) » .NET »

Comparar listas en linq

Estas en el tema de Comparar listas en linq en el foro de .NET en Foros del Web. Buenas Estoy en un entorno asp.net, C# y tengo esta sentencia en Linq var retorno = (from proyecto in contexto.Proyecto where proyecto.BajaPro.Equals(false) orderby proyecto.Paises select ...
  #1 (permalink)  
Antiguo 11/07/2011, 04:40
 
Fecha de Ingreso: julio-2011
Mensajes: 1
Antigüedad: 12 años, 8 meses
Puntos: 0
Comparar listas en linq

Buenas
Estoy en un entorno asp.net, C# y tengo esta sentencia en Linq

var retorno = (from proyecto in contexto.Proyecto
where proyecto.BajaPro.Equals(false)
orderby proyecto.Paises
select proyecto);

var sortedRetorno = retorno.OrderBy(h => h.Fondos.NombreFondo)
.ThenByDescending(h => h.FechaAprobacionInstitucion)
.ThenBy(h => h.Paises.ToList(), new CompararListaPaises())
.ThenBy(h => h.Sectores.NombreSector);

El problema es cuando intento comparar la lista de países

.ThenBy(h => h.Paises.ToList(), new CompararListaPaises())

me da un error:
base {System.SystemException} = {"LINQ to Entities no reconoce el método 'System.Linq.IOrderedQueryable`1[Meh.Dgint.NET.Datos.Proyecto] ThenBy[Proyecto,List`1](System.Linq.IOrderedQueryable`1[Meh.Dgint.NET.Datos.Proyecto], System.Linq.Expressions.Expression`1[System.Func`2[Meh.Dgint.NET.D...

¿ Me puede ayudar alguien ?

Gracias
  #2 (permalink)  
Antiguo 14/08/2011, 17:52
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 7 meses
Puntos: 15
Respuesta: Comparar listas en linq

Debes saber que Linq to data por medio de ToList y ToArray es que ejecuta el query a la base de datos y trae los datos a memoria.

Mientras no hagas esa invocacion el siempre estara es creando un query. Si te fijas el no entiende que es lo que haces aquí new CompararListaPaises() porque eso no tiene nada que ver con query.

Entonces lo que puedes hacer primero es pasar el resultado a objeto ejecutando el ToList para retorno y despues pasarlo al segundo linq que haces para llenar sortedRetorno.

Ejemplo:

var find= (from proyecto in contexto.Proyecto
where proyecto.BajaPro.Equals(false)
orderby proyecto.Paises
select proyecto);

List<Proyecto> retorno = find.ToList();

y sigues con tu lógica.

Etiquetas: linq, listas, proyecto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:55.