Wpis z mikrobloga

#csharp

W jaki sposób z tablicy
["A", "A", "B", "A", "C"]
zrobić tablicę, w której powtórzone elementy dodają się do siebie i otrzymuję
["AA", "B", "A", "C" ] ?

Najfajniej by było wykorzystać LINQ.
  • 9
  • Odpowiedz
@Maav: Może coś w tym kierunku?

var array = new[] { "A", "A", "B", "A", "C" };
var result = array.Aggregate((x, y) => x == y ? x + y : x + ";" + y).Split(';');

edit: nie działa :)
  • Odpowiedz
@Maav: Jestem na kom. wiec nie sprawdzę, ale może pokombinuj z Select Many? Ale szczerze to nie wiem czy nie czytelniejszy bedzie zwykła iteracja po elementach
  • Odpowiedz
@Maav: Ta wersja już powinna działać lepiej:

var array = new[] { "A", "A", "B", "A", "A", "A", "C" };
var result = array.Aggregate((a, b) => a.Last() == b.First() ? a + b : a + ";" + b).Split(';');
  • Odpowiedz
@brzooz:
@Yahoo_: Ostatecznie skończyło się na forze.

Chciałem użyć rozwiązanie z Aggregate, ale niestety całość opiera się na typach anonimowych (we wpisie podałem uproszczoną wersję problemu) i nie da się dokładnie podać typów w Aggregate
  • Odpowiedz