2011-03-09 15 views
10

Está construyendo y utilizando una búsqueda manual (ILookup<T>) enfoque más rápido que utilizando una unión con Join o GroupJoin en una secuencia local IEnumerable<T> en LINQ?¿Beneficios de la búsqueda manual sobre la unión en LINQ?

Leí en alguna parte que el compilador realmente traduce la secuencia interna de Join y GroupJoin a ILookup<T> de todos modos.

¿Cuáles serían los beneficios de ILookup<T> de usarlo por sí mismo?

+2

Si bien la pregunta es interesante, me parece una optimización prematura. Si el código que está escribiendo es crítico para el rendimiento, debe supervisarlo. Si es lo suficientemente rápido, continúa con la siguiente tarea. – Steven

+0

Algún código de ejemplo aclararía su pregunta. –

+0

@Stephen - Estaba tratando de descubrir los pros y los contras de un enfoque así y si lo que dije aquí es que la unión real se traduce en una búsqueda – TheBoyan

Respuesta

5

Depende. Si está trabajando con objetos que están basados ​​en DataContext, entonces la unión se traduce completamente en el servidor SQL a través de la instrucción select. SI es un POCO (o más específicamente una colección CLR Plain Old) o algo más, entonces sí, se utiliza como ILookup.