2011-08-18 17 views
5

Me siguiente consulta¿Linq a los objetos se une a la orden predeterminada especificada cuando no se utiliza ninguna orden?

IEnumerable<string> values = from first in goodOrdered 
join second in badOrdered on first.ToLower() equals 
second.ToLower() 
select second; 

Actualmente mis pruebas muestran que el resultado final es en realidad goodOrdered, como lo quiero. ¿Puedo esperar que siempre sea cierto o debo proporcionar un orden por declaración que obligue a mantener el orden ordenado (hará la consulta más compleja, porque goodOrdered puede parecerse a 1, 9, 2, 7, 6)?

Respuesta

8

Sí, lo hace. De acuerdo con la MSDN documentation:

Ingreso conserva el orden de los elementos del exterior, y para cada uno de estos elementos, el orden de los elementos coincidentes de interior.

Por supuesto, si no se especifica en la documentación, sería un asunto completamente diferente. Otro tema que debería considerar es el de los desarrolladores que serán responsables de mantener el código, y si usted esperaría que ellos sepan/recuerden que el contrato de Join incluye preservar el orden de la secuencia externa ...

Cuestiones relacionadas