Hallo liebe Community,
ich habe ein kleines Problem mit LINQ.
Ich versuche zwei Listen miteinander zu vergleichen und möchte wissen welche Elemente der Liste A in B vorkommen und welche Elemente der Liste A in B nicht vorkommen.
Welche Elemente nicht vorkommen ist mit A.Except(B) schnell erledigt, bei der zweiten Fragestellung laufe ich aber gegen eine Wand.
Ich hatte mir erhofft das ich mit A.Contains(B) die gewünschte Liste erhalte, ich erhalte dann aber nur folgende Fehlermeldung:
Anbei der Quellcode der Prozedur zur besseren Verständlichkeit:
[highlight=vbnet]
Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click
Dim lInput1 As New List(Of String)
Dim lInput2 As New List(Of String)
lInput1.AddRange(txtInput1.Lines)
lInput2.AddRange(txtInput2.Lines)
' Alles in l1, was in l2 ist
Dim r_Ja = lInput1.Contains(lInput2) <- erzeugt den o.g. Fehler
' Alles in l1, was NICHT in l2 ist
Dim r_Nein = lInput1.Except(lInput2)
Dim strJa As String = ""
For x As Integer = r_Ja.Count - 1I To 0I Step -1I
strJa &= r_Ja(x)
If x <> 0I Then strJa &= Environment.NewLine
Next x
Dim strNein As String = ""
For x As Integer = r_Nein.Count - 1I To 0I Step -1I
strNein &= r_Nein(x)
If x <> 0I Then strNein &= Environment.NewLine
Next x
txtJa.Text = strJa
txtNein.Text = strNein
End Sub
[/highlight]
Meine Frage ist nun ob es eine LINQ Methode gibt die ich für meine Zwecke nutzen kann?
Für jeden Tipp dankbar!
Gruß
Rohabu
P.S. Eine kleine Zusatzfrage: Wenn ich die o.g. Funktion habe werde ich damit Listen vergleichen die bis zu 35.000 Einträge haben können, dies ist sicher sehr zeitaufwändig...kann mir jemand Hinweise geben welche Teile des Codes besonders zeitraubend sind?
ich habe ein kleines Problem mit LINQ.
Ich versuche zwei Listen miteinander zu vergleichen und möchte wissen welche Elemente der Liste A in B vorkommen und welche Elemente der Liste A in B nicht vorkommen.
Welche Elemente nicht vorkommen ist mit A.Except(B) schnell erledigt, bei der zweiten Fragestellung laufe ich aber gegen eine Wand.
Ich hatte mir erhofft das ich mit A.Contains(B) die gewünschte Liste erhalte, ich erhalte dann aber nur folgende Fehlermeldung:
Code:
"Der Wert vom Typ "System.Collections.Generic.List(Of String)" kann nicht in "String" konvertiert werden."
[highlight=vbnet]
Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click
Dim lInput1 As New List(Of String)
Dim lInput2 As New List(Of String)
lInput1.AddRange(txtInput1.Lines)
lInput2.AddRange(txtInput2.Lines)
' Alles in l1, was in l2 ist
Dim r_Ja = lInput1.Contains(lInput2) <- erzeugt den o.g. Fehler
' Alles in l1, was NICHT in l2 ist
Dim r_Nein = lInput1.Except(lInput2)
Dim strJa As String = ""
For x As Integer = r_Ja.Count - 1I To 0I Step -1I
strJa &= r_Ja(x)
If x <> 0I Then strJa &= Environment.NewLine
Next x
Dim strNein As String = ""
For x As Integer = r_Nein.Count - 1I To 0I Step -1I
strNein &= r_Nein(x)
If x <> 0I Then strNein &= Environment.NewLine
Next x
txtJa.Text = strJa
txtNein.Text = strNein
End Sub
[/highlight]
Meine Frage ist nun ob es eine LINQ Methode gibt die ich für meine Zwecke nutzen kann?
Für jeden Tipp dankbar!
Gruß
Rohabu
P.S. Eine kleine Zusatzfrage: Wenn ich die o.g. Funktion habe werde ich damit Listen vergleichen die bis zu 35.000 Einträge haben können, dies ist sicher sehr zeitaufwändig...kann mir jemand Hinweise geben welche Teile des Codes besonders zeitraubend sind?
Comment