0

这是数据库架构:数据库架构

我有这个问题,我尝试只从也属于 GroupB 的 Group 表中获取数据,所以我!g.IdGroup.Equals(a.IdGroup)用于排除 GroupA 数据。我检查了 GroupA 和 GroupB ID 是否在 Group 表中,但我仍然从两个表中获取数据。我该如何解决这个问题?对不起我糟糕的英语,以及我糟糕的 sql/linq 知识。

var result = from a in db.GroupA
             from r in db.Registration
             join g in db.Group on r.IdGroup equals g.IdGroup
             where !g.IdGroup.Equals(a.IdGroup)
             select new {
                 g.Name
             };
4

2 回答 2

0

我认为您要查找的内容相当于 SQL 中的 NOT IN,也就是说,查询看起来像这样:

SELECT
    g.name
FROM
    Group g
WHERE
    g.IdGroup NOT IN (SELECT IDGroup FROM GroupA);

这看起来像你想要的吗?

在这种情况下,等效的 LINQ 可以这样实现:

var result = from g in db.Group
             where !(from a in GroupA select a.IdGroup).Contains(g.IdGroup)
             select new {
                 g.Name
             };

希望有帮助。

于 2012-04-27T14:33:32.880 回答
0

通过查看 LINQ,不应该是这样吗?

var result = from a in db.GroupA
             join r in db.Registration on a.IdGroup equals r.IdGroup             
             join g in db.Group on r.IdGroup equals g.IdGroup
             where !g.IdGroup.Equals(a.IdGroup)
             select new {
                 g.Name
             };
于 2012-04-26T17:10:53.010 回答