如何删除两个列表共有的重复(用户定义的类)条目?

富有同情心的自恋者

奇怪的是没有更多的东西了。

简洁版本

ListA具有ListB具有的某些元素,有些则没有。ListB具有ListA具有的某些元素,有些则没有。...实际上,绝大多数是骗子。

注意:元素不是常见的类型,而是从我编写的类中获取的(LINQ Intersect似乎仅适用于已知类型,请参见下面的更新)

如何删除两个列表中它们共有的条目

长版

-设备上具有ListA项目,我想将其与ListB的项目同步。我不想删除并新建。那是不可能的选择。

-要同步列表,我将:

第一:

  1. (?)删除它们之间的所有重复项(毕竟这些条目已经同步)。

  2. 第二:(轻松)删除所有剩余的ListA条目(因为它们不在ListB上,否则将被删除为重复对象)。

  3. 第三:(简单)将ListB上剩下的所有条目添加到ListA(我们需要以ListA结尾的List)。

讨论区

现在是的,我可以简单地手动遍历每个列表,但是问题更多与优雅和性能有关。联合会只是运用了一种“独特”的操作,使骗局成为可能。

使用VB和/或LINQ,但可以从C#转换...

更新-LINQ Intersect不喜欢自定义/用户类型(类):

List1: ip: 85.94.160.0 net: 255.255.224.0 hash: 35462368
List1: ip: 91.187.64.0 net: 255.255.224.0 hash: 15720800
List1: ip: 109.111.96.0 net: 255.255.224.0 hash: 27477092
List1: ip: 185.4.52.0 net: 255.255.252.0 hash: 19444704
List1: ip: 194.158.64.0 net: 255.255.224.0 hash: 65489923

List2: ip: 85.94.160.0 net: 255.255.224.0 hash: 45276315
List2: ip: 91.187.64.0 net: 255.255.224.0 hash: 10391797
List2: ip: 109.111.96.0 net: 255.255.224.0 hash: 29919882
List2: ip: 185.4.52.0 net: 255.255.252.0 hash: 13173532
List2: ip: 194.158.64.0 net: 255.255.224.0 hash: 65387957

(哈希表示每个实例的.GetHashCode()的输出)

我可以覆盖LINQ的Intersect使用的比较器功能吗?我没有在网上找到有关LINQ的Intersect的功能(它用来判断“平等”的功能)的很多信息...


对于VB.NET人员:

这是user2321864的解决方案,但在VB.NET中:

Dim a = New List(Of Integer) From {2, 4, 6, 8}
Dim b = New List(Of Integer) From {1, 2, 3, 5, 7}

'find items common in both lists
Dim dupes = a.Intersect(b).ToList()

'delete common items from both lists
a.RemoveAll(Function(x) dupes.Contains(x))
b.RemoveAll(Function(x) dupes.Contains(x))
富有同情心的自恋者

最终成为可以解决问题的最终版本。我只是将IP和子网连接为散列,所以总会有一种一致的方式。只要您以相同的用法来组合要用于相等性的元素,就可以使用任何东西作为相等性哈希输入。

最大的收获是.GetHashCode和.Equals是相关的。在SO上的其他帖子中也提到了这一点。对于该程序员而言,我们可以重写这些函数以适合我们的自定义对象是一件很棒的事!

可以针对VB中的任何自定义类型对其进行修改...

感谢大家!

Public Class NetworkEntry
    [...]
    '
    ' override base functions for proper .Equals(x) operation
    '
    Public Overrides Function GetHashCode() As Integer
        Dim concat As String = Me.HostAddress.ToString & Me.SubnetAddress.ToString
        Return concat.GetHashCode
    End Function
    '
    Public Overloads Function Equals(obj As NetworkObject) As Boolean
        Dim equal As Boolean = False
        If (Me.HostAddress.ToString = obj.HostAddress.ToString) And
            (Me.SubnetAddress.ToString = obj.SubnetAddress.ToString) Then
                equal = True
        End If
        Return equal
    End Function
    [...]
End Class

感谢大家的投入!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何基于两个自定义对象删除列表中的重复项

来自分类Dev

Java。如何从两个列表中删除重复的对象

来自分类Dev

获取两个品牌之间共有的用户数

来自分类Dev

删除两个命令产生的输出所共有的行

来自分类Dev

比较两个大型词典,并为它们共有的键创建值列表

来自分类Dev

查找两个文件列表共有的最新日期

来自分类Dev

Python:返回两个或多个列表共有的项目

来自分类Dev

如何加入两个没有重复的元组列表

来自分类Dev

配对两个文件/删除重复的条目

来自分类Dev

Yii:如何从两个不同的 cdbcriteria 中查找和删除重复的条目

来自分类Dev

如何找到至少两个向量中共有的元素?

来自分类Dev

如何找到至少两个向量中共有的元素?

来自分类Dev

有两个非常大的列表/集合 - 如何有效地检测和/或删除重复项

来自分类Dev

在C#中有效删除比较两个大列表的重复项?

来自分类Dev

GRUB列表中有两个Windows条目

来自分类Dev

如何删除只有两列相同的两个不同表的重复值?

来自分类Dev

从两个列表中删除重复的公共输出

来自分类Dev

从两个列表中删除重复的单词

来自分类Dev

从两个不同的列表中删除重复的行?

来自分类Dev

合并两个列表,同时删除重复项

来自分类Dev

SQL:计算两个不同条目具有的值的数量

来自分类Dev

比较两个列表中的用户定义对象

来自分类Dev

如何在删除重复项的同时合并具有不同列号的两个表?

来自分类Dev

如何在删除重复项的同时合并具有不同列号的两个表?

来自分类Dev

如何在phpMyAdmin中合并两个表,这样就不会有重复的条目?

来自分类Dev

如何在循环中定义两个变量,而bash中没有重复项

来自分类Dev

合并两个没有重复的节点列表

来自分类Dev

合并两个没有重复的列表

来自分类Dev

合并两个没有重复的节点列表

Related 相关文章

  1. 1

    如何基于两个自定义对象删除列表中的重复项

  2. 2

    Java。如何从两个列表中删除重复的对象

  3. 3

    获取两个品牌之间共有的用户数

  4. 4

    删除两个命令产生的输出所共有的行

  5. 5

    比较两个大型词典,并为它们共有的键创建值列表

  6. 6

    查找两个文件列表共有的最新日期

  7. 7

    Python:返回两个或多个列表共有的项目

  8. 8

    如何加入两个没有重复的元组列表

  9. 9

    配对两个文件/删除重复的条目

  10. 10

    Yii:如何从两个不同的 cdbcriteria 中查找和删除重复的条目

  11. 11

    如何找到至少两个向量中共有的元素?

  12. 12

    如何找到至少两个向量中共有的元素?

  13. 13

    有两个非常大的列表/集合 - 如何有效地检测和/或删除重复项

  14. 14

    在C#中有效删除比较两个大列表的重复项?

  15. 15

    GRUB列表中有两个Windows条目

  16. 16

    如何删除只有两列相同的两个不同表的重复值?

  17. 17

    从两个列表中删除重复的公共输出

  18. 18

    从两个列表中删除重复的单词

  19. 19

    从两个不同的列表中删除重复的行?

  20. 20

    合并两个列表,同时删除重复项

  21. 21

    SQL:计算两个不同条目具有的值的数量

  22. 22

    比较两个列表中的用户定义对象

  23. 23

    如何在删除重复项的同时合并具有不同列号的两个表?

  24. 24

    如何在删除重复项的同时合并具有不同列号的两个表?

  25. 25

    如何在phpMyAdmin中合并两个表,这样就不会有重复的条目?

  26. 26

    如何在循环中定义两个变量,而bash中没有重复项

  27. 27

    合并两个没有重复的节点列表

  28. 28

    合并两个没有重复的列表

  29. 29

    合并两个没有重复的节点列表

热门标签

归档