2009-01-26 13 views
15

¿Se seleccionan y se seleccionan muchas de las combinaciones preferibles?Seleccionar LinqToSQL y SeleccionarMuchas vs Unirse

La razón por la que me pregunto es porque uso LINQPad y en una sección hay comentarios que dicen:

// Note: before delving into this section, make sure you've read the preceding two 
// sections: Select and SelectMany. The Join operators are actually unnecessary 
// in LINQ to SQL, and the equivalent of SQL inner and outer joins is most easily 
// achieved in LINQ to SQL using Select/SelectMany and subqueries! 

Sin embargo, en otras secciones que muestra claramente que las combinaciones estén más rápido (al menos para los ejemplos dado en LinqPad) y para mí son más fáciles de visualizar en mi cabeza.

Tal vez estoy malinterpretando, ya que solo estoy mirando los ejemplos del código y no el libro, pero he visto a otras personas recomendar Seleccionar y Seleccionar muchas más de las uniones también.

Respuesta

15

The Wayward Weblog tenía this to say en relación con el asunto. Unirse utiliza un conjunto explícito de parámetros para unirse a una clave específica y permite combinaciones externas izquierda y derecha. SelectMany realiza un monadic bind que generalmente da como resultado una unión interna o combinación cruzada. Como LINQ es esencialmente una implementación de programación funcional en .NET, SelectMany es la expresión más natural; sin embargo, la configuración explícita de la unión probablemente resulte en acciones más rápidas.

En cuanto a preferido, creo que lo que sea que lea con mayor claridad es lo mejor. El C# version of 101 LINQ Samples no incluye el Unirse, pero el VB list muestra Join y SelectMany utilizados en diferentes escenarios.

+0

Gracias, buena respuesta y enlace. A juzgar por las no respuestas, supongo que realmente no hay una gran diferencia sobre la cual se debería utilizar. – dtc