-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) 必须位于等号语句的右侧。

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

同样适用于第二个连接:

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);

但是错误

名称模型不在等号左侧的范围内。考虑交换等号两边的表达式。

应该告诉你的。

于 2013-03-08T07:11:17.900 回答