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

論理的に考えてみてください。レコードを返すには、次の 2 つの条件があります。

Loc = Locale.Gr AND GrID = 100

Loc <> Locale.Gr AND GrId <> 100

次にWhere、これらの条件を両方とも OR で組み合わせて句を作成し (そのうちの 1 つだけが true になるため)、クエリを作成します。

于 2012-05-19T15:02:01.933 に答える