Linq查询 - 多个在哪里,用扩展方法

时间:2010-04-19 20:54:26

标签: .net linq linq-to-xml

我的代码适用于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

更新 我弄清楚究竟是什么导致了这个问题。我仍然不确定如何解决它。基本上任何传递的空字符串都会导致操作失败。但是,如果所有(姓氏,名字等)都有标准,它就可以工作。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

其中一种测试方法似乎抛出异常。当使用OR时,似乎没有调用失败的测试方法。

尝试找出哪一个中断,可能是因为要测试的值为null或非预期类型。