var items = "A B A D A C".Split(' ');
var unique_items = new HashSet<string>(items);
foreach (string s in unique_items)
Console.WriteLine(s);
печатает
A
B
D
C
Ответ 2
Вы можете использовать метод Distinct для возврата IEnumerable<T> отдельных элементов:
var uniqueItems = yourList.Distinct();
И если вам нужна последовательность уникальных элементов, возвращаемых как List<T>, вы можете добавить вызов ToList:
var uniqueItemsList = yourList.Distinct().ToList();
Ответ 3
Вы можете использовать Distinct метод расширения из LINQ
Ответ 4
В .Net 2.0 Я очень уверен в этом решении:
public IEnumerable<T> Distinct<T>(IEnumerable<T> source)
{
List<T> uniques = new List<T>();
foreach (T item in source)
{
if (!uniques.Contains(item)) uniques.Add(item);
}
return uniques;
}
Ответ 5
Помимо метода расширения Distinct LINQ, вы можете использовать объект HashSet<T>, который вы инициализируете своей коллекцией. Это, скорее всего, более эффективно, чем метод LINQ, поскольку он использует хэш-коды (GetHashCode), а не IEqualityComparer).
На самом деле, если он подходит для вашей ситуации, я бы просто использовал HashSet для хранения элементов в первую очередь.