2017-01-11 5 views
1

Я хочу добавить набор из двух целых значений в список/массив и получить их в виде отдельной группы.Лучший способ получить различный набор целых чисел в C#

например: - { {2,3},{2,3},{5,10},{5,2} } должен стать { {2,3},{5,10},{5,2} }
Каков наилучший способ использовать массив или список?

+4

Ни то, ни другое. Если вам нужен набор данных, используйте набор данных, а не список или массив, ни один из которых не является представлением набора. – Servy

ответ

1

Предполагая, что вы действительно хотите просто получить все отдельные элементы, самый простой способ - использовать список Tuple<int,int>, а затем использовать IEnumerable.Distinct() для удаления дубликатов.

Например:

var data = new List<Tuple<int, int>> 
{ 
    Tuple.Create(2, 3), 
    Tuple.Create(2, 3), 
    Tuple.Create(5, 10), 
    Tuple.Create(5, 2) 
}; 

var distinct = data.Distinct().ToList(); 

foreach (var tuple in distinct) 
    Console.WriteLine(tuple); 

Это не выполняет каких-либо заказа, но если вы хотите сделать заказ результат можно использовать OrderBy(), чтобы выбрать элемент, с помощью которого на заказ:

var distinct = data.Distinct().OrderBy(item => item.Item1).ToList(); 

Этот будет упорядочиваться первым элементом каждой пары (поскольку указан Item1).

+0

Спасибо @Matthew Watson, –

+0

Почему бы не использовать HashSet вместо списка? – aquinas

+0

@aquinas Вы не можете помещать дубликаты в хешсет, поэтому я не мог продемонстрировать, как удалять дубликаты из коллекции сущностей, содержащих дубликаты, если эта коллекция была хешсет. –

Смежные вопросы