在VB.NET中使用Linq验证结果集是NULL

时间:2015-03-20 22:51:00

标签: vb.net linq

我尝试使用Linq / VB.NET验证是否存在两个匹配的列

我相信假设返回一个空结果集' Count'值也应该为null,对吗?

以下是代码;

    Dim crewNumEntered = crewNumInput.Text
    Dim crewLeaderNumEntered = crewLeaderNumInput.Text
    Dim crewNumUnique As Boolean = False

    Using db As New DbClassDataContext
        Dim Count = (From a In db.WarrantyPercents Where a.CrewLeaderNum = crewLeaderNumEntered And a.CrewNum = crewNumEntered Select a.WarrantyPercentsId).ToList
        If Count Is Nothing Then
            crewNumUnique = True
        Else
            'throw error
        End If
    End Using

最终结果是如果crewNumUnique == true,我只想执行一个动作(代码未显示)。

但是,即使结果集应为null,此代码仍会继续填充“'与伯爵。

我该怎么做才能解决这个问题?

编辑:我刚刚意识到count的值不是null,而是返回字符串' System.Collections.Generic.List`1 [System.Int32]'。现在我不知道发生了什么。

2 个答案:

答案 0 :(得分:3)

您正在呼叫ToList ..它永远不会为空。

你应检查它的长度。

If Count.Count = 0 Then

crewNumUnique = True

Else

End If

答案 1 :(得分:2)

即使找不到匹配的行,查询也会返回结果集。

如果恰好有1个结果,则下面将crewNumUnique设置为True。如果您想在没有结果时将crewNumUnique设置为True,请使用0代替1。

Dim result = From a In db.WarrantyPercents Where a.CrewLeaderNum = crewLeaderNumEntered And a.CrewNum = crewNumEntered
Dim count As Integer = result.Count
If count = 1 Then
   crewNumUnique = True
Else
   'throw Error
End If