Linq a vyhledání jedinečných hodnot
Petr Wiedemann, 5. červen 2010
Představme si situaci, kdy máme textovou proměnou, která obsahuje hodnoty oddělené určitým znakem. Z této proměnné budeme chtít získat pouze jedinečné hodnoty, seřadit je podle abecedy a odstranit případné bílé znaky na začátku a konci. Pokud do tohoto úkolu zapojíme Linq, stačí nám na to jen jeden řádek kódu.
V následujícím příkladu máme proměnou src, která obsahuje hodnoty oddělené čárkou. Pro lepší čitelnost jsou metody Linqu rozepsány na samostatné řádky.
string src = "A1, A2,B1, C1, C2,A2,B1, C1, A0,A3,A9,A8,A7,A6";
var values = src.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
.Select(x => x.Trim())
.Distinct()
.OrderBy(x => x)
.ToArray();
Console.WriteLine(String.Join(",", values));
- rozdělení hodnot do pole
- Select(x => x.Trim()) vrací hodnotu bez případných bílých znaků na začátku nebo konci
- Distinct() vrací pouze jedinečné hodnoty
- OrderBy(x => x) všechny hodnoty seřadí podle abecedy
- ToArray() z výsledku předchozí metody vytvoří pole, které nakonec použijeme pro vypsání výsledku