2011-02-11 130 views
3

我有一個LINQ查詢,它會產生一個Job數組。 由於LINQ-to-SQL對跨上下文查詢的限制/限制,我無法對錶進行連接,因此作業記錄的兩個字段爲空。加入兩個獨立的linq查詢

但我可以通過做一個單獨的LINQ查詢來獲得這些。

我的問題是我可以填充這兩個字段很容易說例如通過對這兩個查詢進行連接? - 如果是的話如何?

query1.Join(query2,..... and so on); 

在此先感謝。

EDIT

var results = query1.Join(query2, 
         job => job.JobID, 
         other => other.JobID, 
         (job, other) => new 
         { 
          MissingField = other.Field, 
          OtherMissingField = other.OtherField 
         }); 

我收到錯誤消息: 的類型參數方法「System.Linq.Enumerable.Join(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable, System.Func,System.Func,System.Func)'不能從使用中推斷出來。嘗試明確指定類型參數。

+1

JOINs在L2S中工作得很好。你能提供一個不適合你的簡單版本的代碼嗎? – 2011-02-11 11:48:30

回答

2

如果數據的大小足以將所有內容都帶入內存,則可以在LINQ-to-Objects中執行聯接;只需將一些.ToList().AsEnumerable()添加到原始查詢 - LINQ加入它們仍然是相同的。

但是;這不能用於加入服務器。爲此,請將您需要的表放入單個數據上下文中,或者爲該查詢使用TSQL。對於這樣的目的,LINQ-to-SQL的ExecuteQuery<T>方法非常方便。

+0

在玩了很多關於我終於到達那裏。這是一個愚蠢的錯誤,我使用匿名類型,它不太喜歡它! – m4rc 2011-02-11 12:23:01