gpt4 book ai didi

vb.net - 获取两个列表之间不匹配的所有成员

转载 作者:行者123 更新时间:2023-12-01 10:35:30 25 4
gpt4 key购买 nike

我正在使用 vb.net :(

我有 2 个列表集合,我想返回第 3 个集合,其中第一个集合中的成员不存在于另一个集合中。

所以,例如我有这个基本的类对象

Class Person
Public Property FirstName As String
End Class

我现在创建 2 个列表:

Dim l1 As List(Of Person) = New List(Of Person)()
Dim l2 As List(Of Person) = New List(Of Person)()

Dim p1 As Person = New Person()
p1.FirstName = "andy"
l1.Add(p1)

Dim p2 As Person = New Person()
p2.FirstName = "john"
l1.Add(p2)

Dim p3 As Person = New Person()
p3.FirstName = "david"
l2.Add(p3)

Dim p4 As Person = New Person()
p4.FirstName = "john"
l2.Add(p4)

我想要的是获得包含这些条目的新列表:

andy
david

到目前为止我有这个:

Dim newList = From c1 In l1, c2In l2
Where c2.FirstName <> c1.FirstName
Select c1.FirstName

这给了我:

andy
andy
john

我承认我的 linq 很棒....

最佳答案

一种简单的方法是使用All 扩展方法:

Dim newList = From c1 In l1
Where l2.All(Function(c2) c2.FirstName <> c1.FirstName)
Select c1.FirstName

另一种解决方案可能是使用 Except 扩展方法:

Dim newList=l1.Select(Function(c1) c1.FirstName).Except(l2.Select(Function(c2) c2.FirstName));

更新:

我现在注意到您想要两个列表中的独占元素。您可以连接两个名称列表并稍后应用 GroupBy 以仅获取出现一次的名称:

Dim newList=l1.Select(Function(c1) c1.FirstName).Concat(l2.Select(Function(c2) c2.FirstName))
.GroupBy(Function(c) c)
.Where(Function(g) g.Count()=1)
.Select(Function(g) g.Key);

关于vb.net - 获取两个列表之间不匹配的所有成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36286935/

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