Saltar al contenido

¿Cuál es el efecto de AsEnumerable () en una entidad LINQ?

Solución:

AsEnumerable() es efectivamente un elenco para IEnumerable<T>, que hace que la resolución de miembros encuentre miembros de Enumerable en lugar de Queryable. Por lo general, se usa cuando desea forzar parte de una consulta para que se ejecute como SQL (o similar) y el resto para que se ejecute usando LINQ to Objects.

Consulte la publicación de mi blog de Edulinq para obtener más información.

Ahora realmente tienes dos llamadas a AsEnumerable. Puedo ver cómo eliminar el primero pero no el segundo podría causar problemas, pero ¿ha intentado eliminar ambos?

var results = from p in pollcards
              join s in spoils
                 on new { Ocr = p.OCR, fileName = p.PrintFilename } 
                 equals new { Ocr = s.seq, fileName = s.inputFileName }
              where p.Version == null
              orderby s.fileOrdering, s.seq
              select new ReportSpoilsEntity
              {
                  seq = s.seq,
                  fileOrdering = s.fileOrdering,
                  inputFileName = s.inputFileName,
                  Ocr = p.OCR,
                  ElectorName = p.ElectorName
              };

El uso de AsEnumerable interrumpirá la consulta y hará la “parte externa” como linq-to-objects en lugar de Linq-to-SQL. Efectivamente, está ejecutando un “select * from …” para ambas tablas y luego haciendo las uniones, donde la cláusula filtra, ordena y proyecta el lado del cliente.

Tenga cuidado al usar AsEnumerable con Entity Framework; si su tabla tiene muchos datos, su consulta puede ser lenta porque la consulta primero cargará datos y luego aplicará where cláusula, ordenamiento y proyección.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *