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 に答える