Byłem przyzwyczajony do używania metody Javy Stream#Peek
, ponieważ jest to przydatna metoda do debugowania operacji strumienia pośredniego. Dla tych z Was, którzy nie są zaznajomieni ze sposobem Stream#Peek
, poniżej przedstawiono definicję nim:Jaki jest odpowiednik metody Stream # Peek w języku Java w Linq C#?
Stream<T> peek(Consumer<? super T> action)
zwraca strumień składający się z elementów tego strumienia, dodatkowo wykonując przewidziane działania na każdym elemencie jako elementy są zużywane z wynikowego strumienia. Jest to operacja pośrednia .
Rozważmy prosty przykład poniżej:
List<Integer> integerList = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
List<Integer> result = integerList.stream()
.filter(i -> i % 2 == 0)
.peek(System.out::println)
.collect(Collectors.toList());
Dzięki metodzie Stream#Peek
, to powinien w zasadzie pozwala mi wydrukować wszystkie parzyste numery do konsoli, dzięki czemu można przetestować, aby sprawdzić, czy to, co Oczekiwałbym.
starałem się znaleźć odpowiedź na pytanie pod ręką, ale nie wydaje się znaleźć podobną metodę w C#
, czy ktoś wie równowartość Java Stream#Peek
lub jakiś inny sposób z podobnym zachowaniem?
Istnieje metoda ForEach na klasy List (jest jakaś debata o tym, dlaczego nie jest on dostępny dla IEnumerable), więc trzeba by nazwać „ToList” przed użyciem. Chociaż zwraca nieważne, a nie kolejną listę. Ale łatwo jest napisać własną metodę rozszerzenia dla IEnumerable, która to robi. – user1242967
@ user1242967 Nie ma * debaty * o tym, dlaczego nie istnieje dla 'IEnumerable'. Toczy się debata, czy byłby to dobry pomysł dla "IEnountable", ale dlaczego nie został jasno określony i nie jest kwestionowany. – Servy
@Servy Tak, złe sformułowanie z mojej strony. – user1242967