2011-08-18 5 views
5

mam następujące zapytanieCzy Linq do obiektów łączy się z kolejnością domyślną, gdy nie jest używane żadne zamówienie?

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

Obecnie moje badania pokazują, że efekt końcowy jest rzeczywiście goodOrdered, jak chcę. Czy mogę się spodziewać, że zawsze będzie to prawdą, czy też powinienem dostarczyć zamówienie oświadczeniem, które wymusi utrzymanie zamówienia goodOrdered (sprawi, że zapytanie będzie bardziej złożone, ponieważ goodOrdered może wyglądać jak 1, 9, 2, 7, 6)?

Odpowiedz

8

Tak, robi. Według MSDN documentation:

Dołącz zachowuje się kolejność elementów w zewnętrznej, a każdy z tych elementów, rzędu elementów dopasowania wewnętrznej.

Oczywiście, gdyby nie zostało to określone w dokumentacji, byłaby to zupełnie inna sprawa. Kolejną kwestią, którą warto rozważyć, są deweloperzy, którzy będą odpowiedzialni za utrzymywanie kodu i czy będziecie oczekiwać, że będą wiedzieć/pamiętać, że umowa Join'a obejmuje zachowanie kolejności zewnętrznej sekwencji ...

Powiązane problemy