我有一个数据表,其中包含:
作为整数的
我有一个函数可以在表中找到重复的名称。
Private Function DuplicateComputerNames() As String
Dim ret As String = $"Duplicate Computer Names found in Table Computer.{vbCrLf}"
Dim computerTable As DataTable
computerTable = ComputerTableAdapter.GetData
Dim duplicates = computerTable.AsEnumerable().GroupBy(Function(i) i.Field(Of String)("Name")) _
.Where(Function(g) g.Count() > 1).Select(Function(g) g.Key)
For Each d In duplicates
ret = $"{ret}{vbTab}{d}{vbCrLf}"
Next
Return ret
End Function
这工作得很好。
现在,有时名称的前面有“(池)”。“膝上型电脑-55(池)”我需要一个功能,可以找到重复的笔记本电脑-55部分。也就是说,如果有笔记本-55和膝上型计算机-55(池)
我原以为这段代码能起作用,但显然不行。
Private Function PoolComputerNames() As String
Dim ret As String = $"Possible Duplicate Computer Names found in Table Computer.{vbCrLf}"
Dim computerTable As DataTable
computerTable = ComputerTableAdapter.GetData
Dim duplicates = computerTable.AsEnumerable().GroupBy(Function(i) i.Field(Of String)("Name")) _
.Where(Function(g) g.Count() > 1).Select(Function(g) g.Key.Split("("c)(0).Trim())
For Each d In duplicates
ret = $"{ret}{vbTab}{d}{vbCrLf}"
Next
Return ret
End Function
希望有人能指出正确的方向。谢谢。
发布于 2021-07-14 14:19:47
感谢jmcilhinney的评论,我设法解决了我的问题。
Private Function PoolComputerNames() As String
Dim count As Integer = 0
Dim ret As String = $"[count] possible duplicate Computer Names found in Table Computer.{vbCrLf}"
Dim computerTable As DataTable
computerTable = ComputerTableAdapter.GetData
Dim duplicates = computerTable.AsEnumerable().GroupBy(Function(i) i.Field(Of String)("Name").Split("("c)(0).Trim()) _
.Where(Function(g) g.Count() > 1).Select(Function(g) g.Key)
For Each d In duplicates
count += 1
ret = $"{ret}{vbTab}{d}{vbCrLf}"
Next
ret = ret.Replace("[count]", $"{count}")
Return ret
End Function
https://stackoverflow.com/questions/68360711
复制相似问题