如何翻转或反转相等检查

时间:2014-01-15 11:37:51

标签: c# .net vb.net

我有一个函数,并且希望能够使用参数更改相等性检查,以便对于一个版本,我提取所有等于x的项,而对于另一个版本,所有不等于x的项。

这是我的功能:

Public Function GetAllItemsByUserName(ByVal userName As String) As List(Of MyRecords)
    Dim itemsQuery = From myRecord as MyRecord from _ListOfRecords
                     Where myRecord.Name = userName
                     Select myRecord
    Return itemsQuery.ToList
End Function

所以我想只使用一个参数来翻转相等,这样我就可以提取所有= username的记录,或者所有那些!= username。有没有办法在不编写函数的两个版本的情况下这样做?

4 个答案:

答案 0 :(得分:1)

使用Xor(Exclusive Or)运算符。

Public Function GetAllItemsByUserName(ByVal userName As String, ByVal exclude As Boolean) As List(Of MyRecords)
    Dim itemsQuery = From myRecord as MyRecord from _ListOfRecords
                     Where (myRecord.Name = userName) Xor exclude
                     Select myRecord
    Return itemsQuery.ToList
End Function

答案 1 :(得分:1)

试试这个:

Public Function GetAllItemsByUserName(ByVal userName As String, ByVal equal as Boolean) As List(Of MyRecords)
    Dim itemsQuery = From myRecord as MyRecord from _ListOfRecords
                     Where (myRecord.Name = userName) = equal
                     Select myRecord
    Return itemsQuery.ToList
End Function

答案 2 :(得分:1)

您还可以使用Where中的If(conditional) operator

Public Function GetAllItemsByUserName(ByVal userName As String, equals As Boolean) As List(Of MyRecords)
    Dim itemsQuery = 
        From myRecord In _ListOfRecords
        Where If(equals, myRecord.Name = userName, myRecord.Name <> userName)
        Select myRecord
    Return itemsQuery.ToList
End Function

答案 3 :(得分:1)

这可以实现另一种方式:

Public Function GetAllItemsByUserName(ByVal userName As String, equals As Boolean) As List(Of MyRecords)
    Dim itemsQuery = From myRecord as MyRecord from _ListOfRecords
                     Where (equals && myRecord.Name = userName) Or (!equals && myRecord.Name != userName)
                     Select myRecord
    Return itemsQuery.ToList
End Function