-4

ゲームを作成していますが、テーブル レイアウトは次のようになります。

dbPlayer:
Id (int)
...

dbGame:
Id (int)
Finished (bool)
...

dbGamePlayer:
GameId
PlayerId
...

プレイヤー ID が与えられた場合、プレイヤーが関与しているが (真に) 終了していないすべてのゲームを選択するにはどうすればよいですか?

これは私がこれまでに行ったことです:

from g in dbGame
join gp in dbGamePlayer on gp.GameId equals g.Id
join p in dbPlayer on p.Id equals gp.PlayerId
where p.Id == 1 && g.Finished == false
select g

しかし、私はいたるところにエラーが発生しています。申し訳ありませんが、私はLINQの初心者です

4

1 に答える 1

0

LINQ ステートメントが間違っています。

ジョイントobject( gp) は、equals ステートメントの右側にある必要があります。

join gp in dbGamePlayer on g.Id equals gp.GameId 

同じことが 2 番目の結合にも当てはまります。

join p in dbPlayer on gp.PlayerId equals p.Id 

したがって、完全なステートメントは次のようになります。

IEnumerable query = (from g in dbGame
join gp in dbGamePlayer on g.Id equals gp.GameId 
join p in dbPlayer on gp.PlayerId equals p.Id 
where p.Id == 1 && g.Finished == false
select g);

しかし、エラー

等号の左側の名前モデルはスコープ外です。equals のどちらかの側で式を交換することを検討してください。

それをあなたに言うべきでした。

于 2013-03-08T07:11:17.900 に答える