Как проверить значение строки, если оно имеет повторяющееся значение VB.Net - PullRequest
0 голосов
/ 31 августа 2018

У меня проблема с проверкой value, если у него есть дубликат value.

Например, я ввел 201800001 и в этом value он имеет значение 3 в другой таблице.

`201800001` = `1100`
            = `1100`
            = `1100`

Мой код работает и получает все value, даже если оно одинаковое, но я хочу, чтобы, если в нем был дубликат value, автоматически удалялось другое то же value. Я хочу, чтобы результат был таким,

`201800001` = '1100'

Другой такой же value - удалить.

Это мой код.

  If dgTitleList.Rows.Count = 0 Then MessageBox.Show("No records found to be generated", "No Data", MessageBoxButtons.OK, MessageBoxIcon.Information) : Exit Sub
    If cboNTS.Text = dgTitleList.CurrentRow.Cells(4).Value.ToString() Then
        MessageBox.Show("The Title Status is already " + dgTitleList.CurrentRow.Cells(4).Value.ToString() + ".")
        Exit Sub
    End If
    Dim IsWip As String
    Dim rdSeq, wipSeq, listSeq, tnList, eno, epebid As String
    tnList = ""
    eno = tnList
    rdSeq = tnList
    wipSeq = tnList
    If txtRSUNO.Text = "" Then MessageBox.Show("Please input RSU number", "No RSU Number", MessageBoxButtons.OK, MessageBoxIcon.Asterisk) : Exit Sub
    If cboNTS.Text = "" Then MessageBox.Show("Please choose new title status", "No RSU Number", MessageBoxButtons.OK, MessageBoxIcon.Asterisk) : Exit Sub
    For i = 0 To dgTitleList.Rows.Count - 1
        If eno.Contains(dgTitleList("dcEPEBENO", i).Value) = False Then
            eno &= If(eno = Nothing, "", ",") & dgTitleList("dcEPEBENO", i).Value
        End If

        epebid = dgTitleList.CurrentRow.Cells(1).Value.ToString()
        Dim stat As String = dgTitleList("dcIsWIP", i).Value
        Dim dtno As String = dgTitleList("dcTitleNo", i).Value
        Dim dseq As String = dgTitleList("dcTitleSeq", i).Value
        tnList &= If(tnList = Nothing, "", ",") & If(tnList.Contains(dtno) = True, "", dtno)
        If stat = "N" Then
            If rdSeq.Contains(dtno) = True Then Continue For
            rdSeq &= If(rdSeq = "", "", ",") & dseq
        Else
            If wipSeq.Contains(dtno) = True Then Continue For
            wipSeq &= If(wipSeq = "", "", ",") & dseq
        End If
    Next
    If chkIsWIP.Checked = True Then
        IsWip = "PHILARIS_RD_WIP..MS_Title_List"
    Else
        IsWip = "MS_Title_List"
    End If
    listSeq = rdSeq & If(rdSeq = "" Or wipSeq = "", "", ",") & wipSeq
    Dim RSUs As New List(Of String)
    RSUs.Add("RSU-" & txtRoD.Text & "-" & txtRSUNO.Text)
    CreateFolder(RSUs(0))
    Dim script As String = SetMainHeader(getScriptVersion("Tag Title Status"), txtRoD.Text, txtRSUNO.Text, epebid, "10", "UPDATE TITLE STATUS", "PHILARIS_RD")
    script &= returnScriptGenerated("TagTitleStatus", "Header.txt", txtRSUNO.Text & "|" & eno.Replace(",", "','") & "|" & bookType & "|" & tnList.Replace(",", "','"))
    script &= If(rdSeq = "", "", returnScriptGenerated("TagTitleStatus", "HistRD.txt", ""))
    script &= If(wipSeq = "", "", returnScriptGenerated("TagTitleStatus", "HistWIP.txt", ""))
    script &= returnScriptGenerated("TagTitleStatus", "break2.txt", "")
    script &= If(rdSeq = "", "", returnScriptGenerated("TagTitleStatus", "UpdateRD.txt", cboNTS.Text & "|" & rdSeq))
    script &= If(wipSeq = "", "", returnScriptGenerated("TagTitleStatus", "UpdateWIP.txt", cboNTS.Text & "|" & wipSeq))
    script &= returnScriptGenerated("TagTitleStatus", "Footer.txt", IsWip & "|" & bookType & "|" & txtRoD.Text & "|" & eno & "|" & listSeq & "|" & txtRSUNO.Text & "|" & "Update Title Status|")
    ScriptWriter("RSU-" & txtRoD.Text & "-" & txtRSUNO.Text, script)
    DBAexecScripts(RSUs, "RD_" & txtRoD.Text & ",RD_" & txtRoD.Text)

Это результат, когда я запускаю программу и ввожу значение.

* * * * * * * * * * * * * * '' * '' работает, если value, который я ввел, отличается друг от друга, и также работает, если value - то же самое. Теперь я сказал, что проверить то же самое value.

1 Ответ

0 голосов
/ 31 августа 2018

Скорее всего, вы получите Dictionary или HashSet.

Dim valueHash = New HashSet(Of String)();
For i = 0 To dgTitleList.Rows.Count - 1
    Dim currentVal As String = GetStringExample(i)
    If Not valueHash.Contains(currentVal) Then
        valueHash.Add(currentVal)
    End If
Next

Вышеприведенный пример является очень искаженным, так как я не могу легко следовать вашему опубликованному коду. Если вы можете немного разбить ваш код и реализовать Принцип единой ответственности , работать с ним будет намного проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...