为什么我不能在select linq语句中使用多个级别?

时间:2011-08-02 21:34:45

标签: c# .net linq

我的数据库中有三个表:

enter image description here

我想要的是从wedstrijden表中获取这样的项目:

int id = 3;
var wedstrijden = from w in db.wedstrijden 
                  where w.teams.teamleden.gebruikersid == id 
                  select w;

不幸的是我收到以下错误:

  

编译器错误消息:CS1593:委派   'System.Func'不带1   参数

有没有人知道导致错误的原因或我在哪里可以找到问题的答案?

2 个答案:

答案 0 :(得分:4)

属性wedstrijden.teams.teamleden是可枚举的,因此您必须单独检查每个项目:

int id = 3;
var wedstrijden = from w in db.wedstrijden 
                  where w.teams.teamleden.Any(t => t.gebruikersid == id)
                  select w;

答案 1 :(得分:3)

由于复数/单数形式的误用,你的名字很容易被误导。

问题是w.teams.teamleden.gebruikersid对此图表毫无意义。

看起来就像wedstrijden.teams意味着“团队”,实际上它是一个团队。
同样,看起来就像teams.teamleden是一个单一实体,实际上关系是一对多

因为许多teamleden个实体与单个teams实体匹配,所以你不能放点,它就像这样没有意义:

from p in db.Products
where p.Owner.Orders.ID == id // what would you expect this to mean?
select p