vb.net 使用模糊搜索查找重复项的 Linq 语句

vb.net Linq statement to find duplicates using fuzzy searching

我有一个数据table包含:

我有一个功能可以在 table

中找到重复的名字
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

这非常有效。

现在有时名称会带有“(POOL)”前缀,即“Laptop-55 (POOL)” 我需要一个函数来查找 Laptop-55 部件的重复项。 即如果有 Laptop-55 和 Laptop-55 (POOL)

我认为这段代码可以完成这项工作,但显然不行。

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

希望有人能指出正确的方向。 谢谢

感谢 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