Скажем, у меня есть список с повторяющимися значениями, и я хочу удалить дубликаты.
List<int> myList = new List<int>(Enumerable.Range(0, 10000));
// adding a few duplicates here
myList.Add(1);
myList.Add(2);
myList.Add(3);
Я нашел 3 подхода для решения этой проблемы:
List<int> result1 = new HashSet<int>(myList).ToList(); //3700 ticks
List<int> result2 = myList.Distinct().ToList(); //4700 ticks
List<int> result3 = myList.GroupBy(x => x).Select(grp => grp.First()).ToList(); //18800 ticks
//referring to pinturic comment:
List<int> result4 = new SortedSet<int>(myList).ToList(); //18000 ticks
В большинстве ответов здесь, в SO, подход Отличный показан как "правильный", но HashSet всегда быстрее!
Мой вопрос: есть ли что-нибудь, о чем я должен знать, когда я использую подход HashSet и есть ли еще более эффективный способ?