Latest Entries »

Sunday, August 9, 2009

ASP.NET , C#, LINQ to SQL i unikalne rekordy z tabeli.

Istnieje wiele różnych sposobów, które są lepsze lub gorsze aczkolwiek ja przedstawię taki, który jest bardzo szybki w implementacji(w działaniu pewnie odwrotnie proporcjonalny). Pierwszą rzeczą, którą należy wykonać to pobrać wszystkie rekordy z bazy danych np przy pomocy LINQ to SQL Classes.

Przykładowo jeśli mamy tabelę w MSSQL o nazwie np. Odleglosci, która posiada primary key ID, oraz kolumnę miastoA, miastoB oraz odleglosci.
Pobieram wszystkie (powtarząjące się) rekordy miastoA:

var miasta = (from ex in mojDataContext.Odlegloscis select ex.miastoA);

Następnie skorzystamy z klasy HashSet, która jest kontenerem reprezentującym zbiór elementów w naszym przypadku obiektów String.
HashSet<String> uniqeMiasta = new HashSet();
Następnie przejdziemy po każdym "rekordzie" wynikowym z zmiennej miasta:

foreach (String o in Miasta)
{
uniqeMiasta.Add(o);
}


Następnym krokiem(ostatnim) będzie utworzenie tablicy oraz posortowanie jej alfabetycznie.
String[] miasta = uniqeMiasta.ToArray();
Array.Sort(miasta);


Wyjaśnię teraz na czym polega fenomen obiektów HashSet. Po prostu implementacja tej klasy uniemożliwia wstawienie dwóch identycznych wartości poprzez metodę .Add(Object o).

Dziękuję za uwagę.

0 comments:

Post a Comment