Mam dwa wystąpienia IEnumerable<T>
(z tym samym T
). Chcę nowego wystąpienia, IEnumerable<T>
który jest połączeniem obu.
Czy jest to metoda wbudowana w .Net, czy muszę to napisać sama?
c#
.net
ienumerable
concatenation
Samuel Rossille
źródło
źródło
Odpowiedzi:
Tak, LINQ to Objects obsługuje to z
Enumerable.Concat
:NB: Powinna być
first
lubsecond
być zerowa, otrzymaszArgumentNullException
. Aby tego uniknąć i traktować wartości zerowe jak puste, użyj operatora koalescencji zerowej w następujący sposób:źródło
using System.Linq
przestrzeni nazw na górze pliku kodu, aby zobaczyć pożądaną metodę rozszerzenia w inteligencji IDE.Concat
Sposób powraca do obiektu, który implementujeIEnumerable<T>
powracając przedmiotów (połączyć go CAT), którego wyliczający spróbuje użyć przekazywana w przeliczalnych elementów (połączenie im i B), kolejno dwa. Jeśli przekazane wyliczenia reprezentują sekwencje, które nie zmienią się w trakcie życia Cat, i które można odczytać bez efektów ubocznych, Cat można użyć bezpośrednio. W przeciwnym razie może to być dobry pomysł, aby zadzwonićToList()
naCat
i użyć wynikowyList<T>
(który będzie reprezentował zrzut zawartości A i B).Niektóre wyliczenia wykonują migawkę po rozpoczęciu wyliczania i zwracają dane z tej migawki, jeśli kolekcja zostanie zmodyfikowana podczas wyliczania. Jeśli B jest taką policzalną, to każda zmiana B, która nastąpi przed osiągnięciem przez kota końca A, pojawi się w wyliczeniu Cat, ale zmiany, które nastąpią później, nie będą. Taka semantyka może być myląca; wykonanie zdjęcia Cat może uniknąć takich problemów.
źródło
Możesz użyć poniższego kodu dla swojego rozwiązania: -
źródło
źródło