用LINQ查询多对多关系

时间:2012-02-16 08:53:29

标签: .net sql linq many-to-many

我使用EF 4.1,其中三个表以m-n关系映射。我是Linq的新手,所以对大多数人来说这将是一件容易的事。

表格是用户 - > Users_Rights_Map - >版权

......一个经典的m-n。

我想找到所有RightID为1的用户,例如。

  var r = from u context.Users 
  where u.Rights.Select(r => r.RightID == 1)
  select u;

......不起作用。

正确的LINQ查询是什么样的?

2 个答案:

答案 0 :(得分:4)

尝试

  var users = from u in context.Users 
  where u.Rights.Any(r => r.RightID == 1)
  select u;

答案 1 :(得分:4)

您的查询语法错误(in不在您的查询中)并且您应该使用某些条件函数来使条件不使用select

var r = from u in context.Users 
  where u.Rights.Any(r => r.RightID == 1)
  select u;
对于linq启动和培训,

编辑我觉得有必要查看101 linq sample。 对于Any您可以看到量词,有AnyAll等样本。特别是你的案子包括在那里。