在下面的LINQ查询中,我想当Loc = Locale.Gr返回GrID = 100的所有记录,而当Loc是其他所有其他记录时,GrID<> 100返回。
我怎样才能实现这一目标?我尝试了类似下面的内容,但这是完全错误的。
PrivateSub Test(Byval Loc as Locale)
Private Const GrID as integer = 100
Dim Query = From c In Mob Where c.CountryID = IIf(Loc = Locale.Gr, GrID, <> GrID) select c
End Sub
更新:
当然我可以使用像
这样的东西If Loc = Locale.Gr Then
Query = From c In Mob Where c.CountryID = GrID
Else
Query = From c In Mob Where Not c.CountryID = GrID
End If
但它不是elegand
答案 0 :(得分:1)
以合乎逻辑的方式思考 - 当您想要返回记录时,您有两个条件:
Loc = Locale.Gr AND GrID = 100
Loc&lt;&gt; Locale.Gr AND GrId&lt;&gt; 100
现在通过将这两个条件与OR组合来生成Where
子句(因为只有其中一个是真的)并且您有查询。