2012-04-26 65 views
0

這是數據庫模式:Database schema的LINQ to SQL查詢多重繼承

我有這個問題,我試圖讓只從組表誰也屬於組B的數據,所以我用!g.IdGroup.Equals(a.IdGroup)排除A組數據。 我檢查了GroupA和GroupB ID在組表中,但我仍然從兩個表中獲取數據。我怎麼能解決這個問題?對不起,我的英文不好,還有我的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 
      }; 

回答

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 
      }; 
0

我認爲你在尋找什麼是相當於一個都不在,在SQL中,這是說,一個查詢,看起來像這樣:

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 
      }; 

希望有所幫助。