我试图在数组中找到重复项,并仅将重复项放在数组中。我使用的代码如下
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