gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 15:08:21 25 4
gpt4 key购买 nike

奇怪的是没有更多关于这个的内容。

精简版

ListA 有一些 ListB 有的元素,有一些没有。ListB 有一些 ListA 有的元素,有些没有。...事实上,绝大多数都是骗子。

注意:这些元素不是常见类型,而是来 self 创建的类...(LINQ Intersect 似乎只适用于已知类型 - 请参阅下面的更新)

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

长版

-设备上有 ListA 项目,我想将它与 ListB 的项目同步。我不想删除和制作新的。这不是一个可能的选择。

-要同步列表,我会:

首先:

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

  2. 第二步:(简单)删除所有剩余的 ListA 条目(因为它们不是在 ListB 上,否则它们会被当作骗子删除)。

  3. 第三:(简单)将 ListB 上剩余的任何条目添加到 ListA(我们的列表需要以 ListA 结尾)。

讨论

现在是的,我可以简单地手动遍历每个列表,但问题更多地与优雅和性能有关。 Union 只是应用了一种“独特”的操作,从而避免了欺骗。

使用 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))

最佳答案

LINQ Intersect 将为您提供两个列表中的公共(public)条目

var a = new List<int>{2,4,6,8};
var b = new List<int>{1,2,3,5,7};

//find items common in both lists
var dupes = a.Intersect(b).ToList();

//delete common items from both lists
a.RemoveAll(x => dupes.Contains(x));
b.RemoveAll(x => dupes.Contains(x));

关于vb.net - 如何删除两个列表共有的重复(用户定义的类)条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24235299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com