Ecco un'altra soluzione senza utilizzare l'estensione HashSet
.
var items = new List<string>() { "one", "one", "two", "one", "two", "zero" };
var uniqueItems = items.Where((item, index) => items.IndexOf(item) == index);
È stato adottato da questo thread: javascript - Valori univoci in un array
Test:
using FluentAssertions;
uniqueItems.Count().Should().Be(3);
uniqueItems.Should().BeEquivalentTo("one", "two", "zero");
Test delle prestazioni per List
, HashSet
e SortedSet
. 1 milione di iterazioni:
List: 564 ms
HashSet: 487 ms
SortedSet: 1932 ms
Codice sorgente di prova (sintesi)
HashSet
perderà l'ordine degli articoli. Una caratteristica cheList
fornisce.