Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > List<T> и DISTINCT


Автор: Banderos 8.4.2011, 12:24
Здравствуйте!!!

У меня есть лист, содержащий N-ое кол-во элементов, известно, что в списке много одинаковых элементов.

Вопрос: есть ли у списка какое то свойство или метод, позволяющее удалить одинаковые элементы из него, т.е. оставить каждый элемент в 1 экземпляре???

Заранее спасибо!!!

Автор: -Mikle- 8.4.2011, 14:53
Есть, только не у самого списка, а у метода расширения. Добавляешь using System.Linq (если его еще нету) и:

Код

    List<int> firstList = new List<int>();
    //.......
    List<int> uniqueList = new List<int>(firstList.Distinct());

Автор: jonie 8.4.2011, 21:09
уж лучше тогда в HashSet пихать, нежели в List<T>, тогда и Distinct не нужен, да и сдается мне это будет побыстрее...

Автор: -Mikle- 11.4.2011, 10:03
Цитата(jonie @  9.4.2011,  00:09 Найти цитируемый пост)
 да и сдается мне это будет побыстрее

Однозначно конечно.

Автор: Banderos 11.4.2011, 10:14
Всем спасибо!!!

Автор: neutrino 11.4.2011, 16:37
Не забываем только реализовать Equals & GetHashcode

Автор: Banderos 12.4.2011, 09:08
Коллеги, я пишу в Visual Studio 2010, но проект создавал с использованием .NET Framework 2.0 и смотрю, что нет ни библиотеки using System.Linq и нет HashSet, и через референс не нашел System.Linq, что скажите?

Автор: gambit 12.4.2011, 10:24
Banderos,
1. Переделывать на .net 4
2. Писать свой расширяющий метод для фильтрации или add

Автор: bend0r 12.4.2011, 15:02
Цитата(Banderos @ 12.4.2011,  09:08)
Коллеги, я пишу в Visual Studio 2010, но проект создавал с использованием .NET Framework 2.0 и смотрю, что нет ни библиотеки using System.Linq и нет HashSet, и через референс не нашел System.Linq, что скажите?

если использовать .NET Framework 2.0 не принципиально то версия меняется в свойствах проекта. иначе свой метод

Автор: jonie 12.4.2011, 21:09
можно тут посмотреть http://www.itu.dk/research/c5/ или тут http://powercollections.codeplex.com/ , наверняка должно быть где-то наподобие хешсета

Автор: Banderos 14.4.2011, 10:32
Всем спасибо за помощь!!! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)