我尝试使用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]'。现在我不知道发生了什么。
答案 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