如何使用LiNQ从列表中选择基于另一个列表的项目?

时间:2013-03-07 20:34:18

标签: c# linq

我正在创建一个游戏,我的表格布局如下:

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的新人

1 个答案:

答案 0 :(得分:0)

您的LINQ声明错误。

联合objectgp)必须位于equals-Statement的右侧。

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

但错误

  

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

应该告诉你的。