Sposób Concat
zwróci obiekt, który implementuje IEnumerable<T>
poprzez zwrócenie obiektu (wywołanie go Cat), którego moduł wyliczający spróbuje użyć dwóch przekazywanych elementów przeliczalnych (wywołaj je kolejno A i B). Jeśli przekazane liczby wyliczane reprezentują sekwencje, które nie ulegną zmianie w trakcie życia kota, i które można odczytać bez efektów ubocznych, wówczas Cat może być użyty bezpośrednio. W przeciwnym razie może być dobrym pomysłem wywołanie ToList()
na Cat
i użycie wynikowej List<T>
(która będzie stanowić migawkę zawartości A i B).
Niektóre wyliczenia pobierają migawkę, gdy rozpoczyna się wyliczanie, i zwrócą dane z tej migawki, jeśli kolekcja zostanie zmodyfikowana podczas wyliczenia. Jeśli B jest tak wyliczalny, to każda zmiana w B, która nastąpi przed osiągnięciem przez Cat wartości A, pojawi się w wyliczeniu Cat, ale zmiany, które nastąpią po tym, nie będą. Taka semantyka może być myląca; zrobienie migawki kota może uniknąć takich problemów.
Możesz chcieć dodać do zakładek http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b. –
powiązane, jeśli pomaga: [elegancki sposób łączenia wielu kolekcji elementów?] (Http://stackoverflow.com/questions/4493858/elegant-way-to-combine-multiple-collections-of-elements) – nawfal