查找VB.Net中字符串数组中的重复项



我试图在数组中找到重复项,并仅将重复项放在数组中。我使用的代码如下

Dim duplicates As List(Of String) =
WithDuplicates.GroupBy(Function(n) n) _
.Where(Function(g) g.Count() > 1) _
.Select(Function(g) g.First) _
.ToList()
Dim DuplicatesOnly As String() = duplicates.ToArray

withduplicate是包含重复项的Array。以前,我使用一个richtextbox而不是一个数组,但我不得不切换到一个数组,因为线程。我不知道为什么我的代码不再工作了。有什么办法让它工作吗?

编辑:上面的代码确实可以工作,是我的另一部分代码引起的错误。

这可能对你有帮助:

Dim duplicates As List(Of String) = WithDuplicates.Distinct.Where(Function(el) Array.IndexOf(WithDuplicates, el) <> Array.LastIndexOf(WithDuplicates, el)).ToList

你差一点就成功了。你只需要选择第二个键而不是第一个键。

Dim withDuplicates As New List(Of String) From {"a", "b", "c", "a", "c"}
Dim duplicates As List(Of String) =
withDuplicates.GroupBy(Function(n) n).
Where(Function(g) g.Count() > 1).
Select(Function(g) g.Key).ToList()
Dim DuplicatesOnly As String() = duplicates.ToArray
Console.WriteLine(String.Join(", ", DuplicatesOnly))

a、c

如果重复。吉米的第一个评论可能是中肯的,但是你的问题缺少细节。

Dim WithDuplicates As New List(Of String) From {"aa", "b", "c", "aa", "c", "AA", "c"}
' Dim WithDuplicates As New List(Of String) From {"aa", "b", "c"} ', "aa", "c", "AA", "c"}
Dim duplicates() As String
duplicates = WithDuplicates.GroupBy(Function(n) n).
Where(Function(g) g.Count() > 1).
Select(Function(g) g.First).ToArray

最新更新