代码之家  ›  专栏  ›  技术社区  ›  Daniel

(类a的)列表包含(类B的)列表和一个字符串。检查新字符串是否已存在

  •  0
  • Daniel  · 技术社区  · 4 年前

    我有一张a类的清单,其中包括一张B类的清单。它包含一个名为heading的字符串。 我使用文本框读取新字符串。我想检查新字符串是否已经存在。

    我以前的代码可以工作,但我认为可以用更优雅的方式来完成。我觉得有点难,因为我有这个类结构。我为您创建了一个新项目,只复制了必要但可复制的源代码。

    Imports Microsoft.VisualBasic.ControlChars
    Public NotInheritable Class FormMain
        Private allA As New List(Of ClassA)
        Private the_new_String As String = ""
    
        Private Sub FormMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            allA.Add(New ClassA)
        End Sub
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            For i As Integer = 0 To allA.Count - 1 Step 1
                For j As Integer = 0 To allA(i).allB.Count - 1 Step 1
                    If allA(i).allB(j).Heading = the_new_String Then
                        MessageBox.Show($"Diesen Titel gibt es bereits.{NewLine}This title already exists.",
                                        "",
                                        MessageBoxButtons.OK,
                                        MessageBoxIcon.Information)
                        Return
                    End If
                Next
            Next
        End Sub
    
        Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
            the_new_String = TextBox1.Text
        End Sub
    End Class
    

    ClassA.vb

    Public Class ClassA
        Public allB As New List(Of ClassB)
    
        Public Sub New()
            allB.Add(New ClassB())
        End Sub
    End Class
    

    Public Class ClassB
        Public Heading As String = "Test"
    End Class
    
    1 回复  |  直到 4 年前
        1
  •  1
  •   jmcilhinney    4 年前
    If allA.Any(Function(a) a.allB.Any(Function(b) b.Heading = the_new_String)) Then
        'The specified text already exists.
    End If