2014-02-11 4 views
0

У меня есть коллекция список из следующего типаDistinct Список элементов

CoordinateCollection pointCoordinates = new CoordinateCollection(); 

он добавляет список типа вектора. Я хочу удалить дубликаты записей из списка

Я пытаюсь как этот

pointCoordinates = pointCoordinates.Distinct(); 

это дает мне ошибку

cannot implicitly convert type 'system.collections.generic.ienumerable<SharpKML.Base.Vector> to SharpKML.Dom.CoordinateCollection 

Пожалуйста, помогите мне в решении этого. Я хочу уникальный набор записей

+0

- ошибка, вызванная, когда вы выделяете или назначаете –

+1

Снова прочитайте сообщение об ошибке. Я думаю, что это достаточно ясно. Используйте другую переменную, чтобы назначить результат. –

ответ

1

Так как CoordinateCollection орудий ICollection<Vector> и Vector переопределениях Equals + GethashCode вы можете использовать Distinct. Но вы должны использовать конструктор CoordinateCollection создать новый:

pointCoordinates = new CoordinateCollection(pointCoordinates.Distinct()); 

Обратите внимание, что я не знаком с SharpKML, я смотрел на это source code.

+0

Спасибо Тим Шмельтер. –

0

Distinct собирается вернуть IEnumerable<SharpKML.Base.Vector>. Вы не можете присвоить этот тип вашему экземпляру CoordinateCollection, потому что хотя это IEnumerable<SharpKML.Base.Vector>, он также не может быть экземпляром CoordinateCollection.

Если вам нужен экземпляр CoordinateCollection создать/использовать конструктор, который будет принимать IEnumerable<SharpKML.Base.Vector> в качестве входных данных в противном случае, если IEnumerable<SharpKML.Base.Vector> будет делать то объявить переменную как таковой.

1

Как указано в сообщении, вы не можете неявно назначать объект типа system.collections.generic.ienumerable<SharpKML.Base.Vector> объекту типа SharpKML.Dom.CoordinateCollection. Я бы предложил использовать один из методов их преобразования типа (зарегистрировано here).