0

我有2個表格。 表1和表2.他們有一對多的關係。我正在嘗試執行下面的查詢。它可以很好地找到結果。我的意思是,如果它不能像往常一樣根據參數找到任何結果,我得到空值。然而它在表1類中始終帶來所有表2的結果,而且我只想根據查詢得到表2的結果。Linq To Entity - 過濾關係數據問題

dc.Table1s.SingleOrDefault(t1 => t1.SearchField1 == param1 
          && t1.Table2s.Any(t2 => t2.SearchField2 == param2 
              && t2.SearchField3 == param3)); 

我想要結果作爲Table1類,並過濾Table1.Table2s。可能嗎???

回答

0

您需要定義您希望如何使用兩個表之間的關係。

例如,如果表2具有表1的引用,表1具有表2的集合:

var result = (from t1 in Table1s 
      from t2 in t1.Table2s // this leverages the relationship 
      where t1.sf1 == p1 
        && t2.sf2 = p2 
        && t2.sf3 == p3 
      select t1).FirstOrDefault(); 

以上會使用你們的關係加入了兩個給你所有T1的那場比賽標準。

+0

謝謝你的回答。但它仍然不會過濾t1.Table2s的結果。我忘了說我正在使用LazyLoading。可能是原因嗎? – EVR 2011-06-11 11:10:58

+0

可能 - 單步執行代碼並在調用linq查詢之前檢查t1.Table2s是否有任何結果。 – 2011-06-11 11:13:25

+0

我沒有問題的查詢。如果3個標準不匹配,我根本沒有結果。所以我很確定查詢正在工作。當我從查詢中取回Table1並檢查Table1.Table2s時,我看到2條記錄沒有一條。在LinqToSQL中,我沒有這樣的問題。但我想是LazyLoading的原因。它在返回結果時覆蓋查詢... – EVR 2011-06-11 11:16:55