【问题标题】:Can't get non-members of a group in many-to-many无法在多对多中获取非组成员
【发布时间】:2012-07-18 15:48:18
【问题描述】:

我有两张桌子;一个用于团体,另一个用于成员。第三个表是组成员的交集表,但我们在使用实体框架时看不到该表。我想使用 C# 和 LINQ 来获取不在特定组中的所有成员。我想列出这些成员,以便用户可以为该组选择其他成员。我找不到使这项工作有效的语法示例。我是 C# 和 LINQ 的新手,但精通 SQL 和 VB。谁能举个例子?

【问题讨论】:

  • 您的 EDMX 中有导航属性吗?
  • 是的。我的 EDMX 显示了我的两个表以及它们之间的关系。每个表显示对面表的一个导航属性(命名为表名的复数形式)。
  • 你可以使用延迟加载,或者在你的查询中使用包含
  • 我不知道这些建议是什么。你能解释一下吗?
  • { var q = from p in CadPositions join g in CadPosGroups on p 等于 g.CadPositions into position from g in positions.DefaultIfEmpty() select new { p.CadPosition1, e.Description, CADPosGroupID = 0 };这不起作用 - 抱怨连接不正确(使用 LINQPad4)。

标签: c# linq entity-framework many-to-many


【解决方案1】:

我想使用 C# 和 LINQ 来获取所有不在 特定的群体。

var members = context.Members
    .Where(m => !m.Groups.Any(g => g.GroupId == particularGroupId))
    .ToList();

【讨论】:

  • 感谢您的回复! LINQPad 抱怨“上下文”不存在。
  • @TomM.: context 是您派生的ObjectContext(或DbContext)类的一个实例,也许它在您的示例中有另一个名称。在某个地方,您必须有这样的上下文才能通过 Entity Framework 运行查询。
  • 谢谢。这给了我一些研究。不幸的是,谷歌是我唯一的资源。我不懂网络编程,但我想自学一下 MVC、EF、LINQ。
  • @TomM.:在 LINQPad 中(至少在我的 4.42 版中),您必须在查询窗口上方的“数据库”组合框中选择 DLL 或 EXE 中的上下文。如果您选择了它,请在上面的查询中省略var members = context. 部分,只需以Members.... 开头。
  • 数据库组合框指定我的 EF 实体。从建议的查询中删除“var”仍会导致“上下文”不存在错误。
猜你喜欢
  • 2019-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-27
  • 1970-01-01
  • 1970-01-01
  • 2020-10-23
相关资源
最近更新 更多