0

在下面的 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

但这不是优雅的

4

1 回答 1

1

以合乎逻辑的方式考虑它 - 当您想要返回记录时有两个条件:

Loc = Locale.Gr AND GRID = 100

Loc <> Locale.Gr AND GRID <> 100

现在Where通过将这两个条件与 OR 组合来创建一个子句(因为其中只有一个条件为真),您就有了查询。

于 2012-05-19T15:02:01.933 回答