0

我有以下类型的列表集合

CoordinateCollection pointCoordinates = new CoordinateCollection();

它添加了类型向量的列表。我想从列表中删除重复的条目

我正在尝试这样

pointCoordinates = pointCoordinates.Distinct();

它给了我一个错误

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

请帮我解决这个问题。我想要一组独特的记录

4

3 回答 3

1

正如消息所述,您不能将 type 对象隐式分配给 typesystem.collections.generic.ienumerable<SharpKML.Base.Vector>对象SharpKML.Dom.CoordinateCollection。我建议使用他们的一种类型转换方法(在此处记录)。

于 2014-02-11T16:49:58.890 回答
1

由于 CoordinateCollection实现ICollection<Vector>Vector覆盖Equals+GethashCode你可以使用Distinct. 但是你需要使用构造函数CoordinateCollection来创建一个新的:

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

请注意,我不熟悉SharpKML,我看过它的源代码

于 2014-02-11T16:46:16.827 回答
0

Distinct 将返回一个IEnumerable<SharpKML.Base.Vector>. 您不能将该类型分配给您的CoordinateCollection实例,因为即使 is 是 anIEnumerable<SharpKML.Base.Vector>它也可能不是CoordinateCollection.

如果您需要一个CoordinateCollection创建/使用将IEnumerable<SharpKML.Base.Vector>作为输入的构造函数的实例,否则如果IEnumerable<SharpKML.Base.Vector>将这样做,则声明您的变量。

于 2014-02-11T16:47:22.197 回答