我的代码适用于OR,因为我在下面列出了它,但我想使用AND而不是OR而且它失败了。我不太确定我做错了什么。基本上我有一个Linq查询,可以搜索XML文件中的多个字段。搜索字段可能并非都包含信息。每个元素都运行扩展方法,并测试相等性。任何建议将不胜感激。
refinedresult = From x In theresult _
Where x.<thelastname>.Value.TestPhoneElement(LastName) Or _
x.<thefirstname>.Value.TestPhoneElement(FirstName) Or _
x.<id>.Value.TestPhoneElement(Id) Or _
x.<number>.Value.TestPhoneElement(Telephone) Or _
x.<location>.Value.TestPhoneElement(Location) Or _
x.<building>.Value.TestPhoneElement(building) Or _
x.<department>.Value.TestPhoneElement(Department) _
Select x
Public Function TestPhoneElement(ByVal parent As String, ByVal value2compare As String) As Boolean
'find out if a value is null, if not then compare the passed value to see if it starts with
Dim ret As Boolean = False
If String.IsNullOrEmpty(parent) Then
Return False
End If
If String.IsNullOrEmpty(value2compare) Then
Return ret
Else
ret = parent.ToLower.StartsWith(value2compare.ToLower.Trim)
End If
Return ret
End Function
更新 我弄清楚究竟是什么导致了这个问题。我仍然不确定如何解决它。基本上任何传递的空字符串都会导致操作失败。但是,如果所有(姓氏,名字等)都有标准,它就可以工作。有什么想法吗?
答案 0 :(得分:1)
其中一种测试方法似乎抛出异常。当使用OR时,似乎没有调用失败的测试方法。
尝试找出哪一个中断,可能是因为要测试的值为null或非预期类型。