【问题标题】:Distinct List Elements不同的列表元素
【发布时间】:2014-02-11 16:39:53
【问题描述】:

我有以下类型的列表集合

CoordinateCollection pointCoordinates = new CoordinateCollection();

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

我正在尝试这样

pointCoordinates = pointCoordinates.Distinct();

它给了我一个错误

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

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

【问题讨论】:

  • 是你distinct或者assign的时候出现的错误
  • 再次阅读错误信息。我认为这已经足够清楚了。使用另一个变量来分配结果。

标签: c# asp.net sharpkml


【解决方案1】:

由于CoordinateCollection 实现ICollection&lt;Vector&gt;Vector 覆盖Equals + GethashCode,您可以使用Distinct。但是需要使用CoordinateCollection的构造函数新建一个:

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

注意我不熟悉SharpKML,我看过它是source code

【讨论】:

  • 感谢蒂姆·施梅尔特。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    Distinct 将返回 IEnumerable&lt;SharpKML.Base.Vector&gt;。您不能将该类型分配给您的 CoordinateCollection 实例,因为即使 is 是 IEnumerable&lt;SharpKML.Base.Vector&gt; 它也可能不是 CoordinateCollection 的实例。

    如果您需要CoordinateCollection 的实例,请创建/使用将IEnumerable&lt;SharpKML.Base.Vector&gt; 作为输入的构造函数,否则如果IEnumerable&lt;SharpKML.Base.Vector&gt; 会这样做,则声明您的变量。

    【讨论】:

      猜你喜欢
      • 2021-03-11
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 2019-12-25
      • 2019-03-08
      • 2020-05-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多