.net 比较两个不同维度的数组
我试图比较两个始终具有不同维度的数组.net 比较两个不同维度的数组,.net,vb.net,arrays,.net-2.0,.net,Vb.net,Arrays,.net 2.0,我试图比较两个始终具有不同维度的数组 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的数组 对于较旧版本的.net framework是否有任何方法
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的数组
对于较旧版本的
.net framework
是否有任何方法可以不使用而执行此操作您可以使用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
我做过类似的事情。 如果我们有两个数组,分别称为
paramOld
{“1”、“2”、“3”}和paramNew
{“2”、“3”}
对于没有重复项的两个排序整数数组,如示例所示
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
公共函数差异(a()为整数,b()为整数)为整数()
Dim aLen作为整数=a.长度
如果aLen=0,则
返回b
如果结束
Dim bLen作为整数=b.长度
如果bLen=0,则
归还
如果结束
Dim diff作为新列表(整数)
尺寸i为整数=0
尺寸j为整数=0
做
如果a(i)=b(j),那么
i+=1
j+=1
如果a(i)>b(j)那么
差异添加(b(j))
j+=1
如果a(i)
这在vb中是否可行?这种方法在c语言中非常好,这取决于.NET版本而不是语言(但是是的,你是对的,c语言中的例子)。谢谢你的回答,这种方法和我在这里找到的非常相似是的,当然!我想这是Except()的一个常见示例!:)您知道对较旧版本的.net framework执行此操作的方法吗?您确切使用的是哪一版本的.net?请参阅我刚才对您的标记所做的操作?另外:对于arr1中的潜在重复项,您希望执行什么操作?结果应该只包括不同的项目吗?或者你能保证不会有复制品吗?
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