相似字串比对-使用vb.net

我有一字串
"BBB-AAA,AAACCCkkkkkDDDDD"

我会从数据库载入一系列的短的字串去匹配,不能限制以下数组出现的先后顺序
1:AAA
2:AAACC
3:A
我希望这个"BBB-AAA,AAACCCkkkkkDDDDD"字串,最后是被2:AAACC所配到

用字串 like * AAA* 或是like AAACC 或是like A都是true的
但是最像的是AAACC,,如何在vb.net语法内设计呢?或是思路怎么做呢?

 你怎么定义像?比较长就是像?
那么
Dim str1 = "BBB-AAA,AAACCCkkkkkDDDDD"
Dim tofind() as String = { "AAA", "AAACC", "A" }
Dim query = tofind.OrderBy(Function(x) x.Length).Where(Function(x) str1.Contains(x)).LastOrDefault()
If Not(query Is Nothing) Then
MsgBox query

To Caozhy
其实数据库里是长这样子的,如2:AAACC或是AAACX都算是同一个型号,因此ID是一样的
图片说明
我会一次从数据库带入一组数据
第一次AAA
第二次AAACC,AAACX其中一个同都可以
第三次A,A0
{ "AAA", "AAACC", "A" }要变成{"AAA","AAACC","AAACX","A","A0"}{1,2,2,3,3}
这样的感觉吗?
最后传出值ID=2

这个是我写的比较简易的,但是有一个问题
TBODescription的字串,应该是id=2,但是被会顺序先的id=1时,就判断true,就跳离回圈了
这时候也不能用那个字串比较长用排序长短来判断,因为TBOProductName,他是数组,有好几个在一起(例如AAA,AAAC,AAA-01都算同一个)

Public Function TestFindTBOFactoryID(ByVal TBODescription As String) As Long
TBODescription = "品牌:refa,型号:CARAT RAY FACE,生产企业:MTG Co., LTD,颜色分类:银,是否电动:否,瘦脸机样式:滚轮式"
Dim TBODescription2 = "品牌:refa,型号:RF-PC2019B 2,生产企业:MTG,颜色分类:银色,是否电动:否,瘦脸机样式:滚轮式"

    Dim SqlStr As String
    SqlStr = "Select AtTBOProductID, TBOProductName From tbtbofactory "
    Dim mytb As New System.Data.DataTable
    mytb = mydb.dbDataTable(SqlStr)
    '这个表格长成
    ' AtTBOProductID, TBOProductName
    ' 1  CARAT RAY,RF-PC2019B         TBODescription2这个会被选到      
    ' 2  CARAT RAY FACE               TBODescription这个会被选到
    ' 3  ReFa S CARAT RAY,S CARAT RAY
    ' 4  CARAT,PEC-L1706
    ' 5  ReFa S CARAT,S CARAT
    ' 6  4 CARAT,RF-FC1932B
    ' 7  CARAT FACE,RF-CF1842B

    Dim rowIndex As Long = 0
    Dim AtTBOProductID As Long = 1
    While rowIndex < mytb.Rows.Count
        Dim str As String = mytb.Rows(rowIndex).Item(1)
        '切成多段
        str = str.TrimEnd(",")
        Dim arr() As String = Split(str, ",")
        Dim i As Long = 0
        For i = 0 To arr.Count - 1
            If TBODescription.ToUpper Like "*" & arr(i).ToUpper & "*" Then
                AtTBOProductID = mytb.Rows(rowIndex).Item(0)
                Exit While
            End If
        Next i
        rowIndex += 1
    End While
    Return AtTBOProductID
End Function