我试图比较两个总是有不同尺寸的数组。
eg. arr1 -> {1,2,3} and arr2->{1,2}
我确实尝试过能够将匹配的项目添加到新数组中。但我期待只获得无与伦比的项目
我希望比较两个数组,只将项目'3'放入arr1中的新数组,而不是arr2
例如arr1 - > {1,2,3}和arr2-> {1,2}应该会生成一个带有3的新数组 arr1 - > {1,2,3,4}和arr2-> {1,2}应该产生一个3,4
的数组提前致谢
有没有办法在不使用Enumerable.Except
的情况下为旧版.net framework
执行此操作
答案 0 :(得分:1)
我做过类似的事情。
如果我们有两个名为paramOld
{“1”,“2”,“3”}和paramNew
{“2”,“3”}
If paramOld.Length > paramNew.Length Then
Dim paramDelete((paramOld.Length - paramNew.Length) - 1) As String
Dim isFound As Boolean = False
For i As Int32 = 0 To oldparamLenght - 1
isFound = False
For j As Int32 = 0 To newparamLength - 1
If paramOld(i) = paramNew(j) Then
isFound = True
Exit For
End If
Next
If isFound = False Then
paramDelete(i) = paramOld(i)
End If
Next
End If
答案 1 :(得分:0)
你能使用LINQ吗? Except()
可能适合您。
var arr3 = arr1.Except(arr2);
<强>被修改强>
如果你不能在这里使用LINQ这个函数的快速和脏版本:
Public Shared Function Except(a As List(Of Integer), b As List(Of Integer)) As List(Of Integer)
Dim result As New List(Of Integer)()
For Each value As Integer In a
If Not b.Contains(value) Then
result.Add(value)
End If
Next
For Each value As Integer In b
If Not a.Contains(value) Then
result.Add(value)
End If
Next
Return result
End Function
答案 2 :(得分:0)
对于两个没有重复的排序整数数组,如示例所示,
Public Function differences(a() As Integer, b() As Integer) As Integer()
Dim aLen As Integer = a.Length
If aLen = 0 Then
Return b
End If
Dim bLen As Integer = b.Length
If bLen = 0 Then
Return a
End If
Dim diff As New List(Of Integer)
Dim i As Integer = 0
Dim j As Integer = 0
Do
If a(i) = b(j) Then
i += 1
j += 1
ElseIf a(i) > b(j) Then
diff.Add(b(j))
j += 1
ElseIf a(i) < b(j) Then
diff.Add(a(i))
i += 1
End If
Loop While i < aLen AndAlso j < bLen
If i < aLen Then
For k = i To aLen - 1
diff.Add(a(k))
Next
End If
If j < bLen Then
For k = j To bLen - 1
diff.Add(b(k))
Next
End If
Return diff.ToArray
End Function