我有两个字符串数组,我想要相互比较。一个数组(sProdList)将总是一个设置大小(16个值),另一个(sProd)可能是16个,但它可能是更多或更少的值。我想看看sProd是否包含sProdList中的任何值。比较不同大小的字符串数组
我用下面的LINQ尝试了这一点:
If Array.Exists(sProd, Function(x As String) sProdList.Contains(x)) Then
的想法是,如果sProd的当前值是在sProdList它进入if语句,否则跳过它。
调试我的代码时,我发现x的值是24,我不确定它从哪里得到这个值,因为我的数组都没有24个项目。
代码如下,任何帮助,将不胜感激:
'Separate out Product Names
Dim sProd() As String = {}
Dim sInst() As String = {}
Dim sProdList() As String = {"Auto", "Chequing", "GIC", "Mutual Funds", "Real Estate", "RIF", "RSP", "Savings", "Shares", "Stock", "TFSA", "CCard", "Guar", "Loan", "Loc", "Mortgage"}
sProd = objNode.InnerText.Split(",")
objNode = Nothing
objNode = objXMl.SelectSingleNode("//Inst")
sInst = objNode.InnerText.Split(",")
Dim instPos As Integer = 0
For Each st As String In sProdList
If Array.Exists(sProd, Function(x As String) sProdList.Contains(x)) Then
If sInst(instPos) = "PCCU" Then
img = My.Resources.check
ElseIf sInst(instPos) <> "PCCU" OrElse sInst(instPos) = "" Then
img = My.Resources.exclamation
Else
img = My.Resources.redX
End If
dt.Rows.Add(New Object() {st, imageToByteArray(img)})
instPos += 1
End If
Next
dgProduct.DataSource = dt
你得到你所期望的结果?当使用像'Contains'这样的Linq方法时,我不会完全信任调试器。 Linq在源代码集合中添加了可以在调试时提供误导性信息的包装器。 –
不,目前我的sProd有4个值,3个在sProdList中,有一个没有。它不应该输入第四个值的If语句,但它是。 –
必须注意,您应该启用Option Strict。 – Plutonix