比较一个属性的两个对象列表的每一行并创建新对象



我想做的是:

比较compareList的每一行和refList的每一行

----- Do you find 'Leistungscode' of compareList in refList?
----- Yes--> Ignore
----- No--> New Entry, add to resutList

我的问题是,对于我的for每个循环,每次Leistungscode不匹配时,它都会创建一个新条目,但我需要首先查看整个refList,然后将其添加到列表中,如果我还没有找到它。你知道怎么做吗?

这是我尝试的:

For Each rowCompare In compareList
For Each rowRef In refList
If rowCompare.Leistungscode.CompareTo(rowRef.Leistungscode) = 0 Then
Else
resultList.Add(New ISAACService(rowCompare.Leistungscode, rowCompare.K_Art, rowCompare.UANR, rowCompare.Ueberbegriff, rowCompare.Benennung, rowCompare.Anzahl, rowCompare.Einheit, rowCompare.Einzelkosten, rowCompare.Summencode))
End If
Next
Next

首先我认为你不应该使用CompareToCompareTo做额外的工作来确定位置。你只需要一个等号。

空的If,只有在else中有代码,可以通过将Not添加到if中来纠正。

真正的关键是Exit For。一旦发现没有匹配的实例,该实例就会被添加到resultList中,因此我们希望在此时停止搜索,以避免resultList中的重复条目。Exit For只退出For内部循环。外循环将继续执行commpareList的下一个元素。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
For Each rowCompare In compareList
For Each rowRef In refList
If Not rowCompare.Leistungscode = rowRef.Leistungscode Then
resultList.Add(New ISAACService(rowCompare.Leistungscode, rowCompare.K_Art, rowCompare.UANR, rowCompare.Ueberbegriff, rowCompare.Benennung, rowCompare.Anzahl, rowCompare.Einheit, rowCompare.Einzelkosten, rowCompare.Summencode))
Exit For
End If
Next
Next
MessageBox.Show(resultList.Count.ToString)
End Sub

最新更新