2012-11-13 140 views
0

我再次重寫我的問題,我沒有以正確的方式公開它,抱歉。SQL查詢與Linq-to-SQL的子查詢等效

我有這樣的SQL查詢:

SELECT T1.*, T2.documentNumber 
FROM TABLE1 T1  
LEFT JOIN TABLE2 T2 ON  
    T2.documentNumber = (
     SELECT TOP 1 documentNumber   
     FROM TABLE2 
     WHERE description = T1.description)          
WHERE T1.color = 'RED'; 

我需要檢索T1顏色與相應T2.documentNumber值過濾的所有行,但獨特T1行,我的意思是,關係1比1與T2

T1T2通過description列相關。因爲descriptiont2中不唯一,所以此表可以包含具有相同描述的N行,因爲我只需要1行作爲每行T1的結果,所以我通過唯一列(documentNumber)獲得了前1個過濾。

這個查詢對我來說工作正常,我想知道的是Linq-to-SQL的等價物,我嘗試了幾個小時但沒有成功。請有人幫助我嗎?

+0

哪個欄目做T1和T2有什麼共同點? – Kyle

+0

T1和T2通過「描述」相關 –

回答

2

嘗試

var result = table1.Where(t1 => t1.color == "RED") 
        .GroupJoin(table2, 
           t1 => t1.description, 
           t2 => t2.description, 
           (t1,g) => new { 
               T1 = t1, 
               DocumentNumber = g.FirstOrDefault() 
              }); 

強制性101鏈接:http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b應該幫助處理這些種類的查詢....

+0

我現在需要離開辦公室,明天讓我檢查一下,我會給你反饋。謝謝! –

+0

我無法抗拒誘惑,我留在辦公室,我試了一下,它按預期工作,這是我需要的,非常感謝!你救了我的一天。 –

+0

@Jero Coolios,但看看這些例子,但這樣的事情應該從Queryable擴展方法的定義中顯而易見。 – user1793607