2012-07-30 64 views
1

我有一個SQL query,我正在兩個表上執行操作。連接操作的Lambda表達式

這裏是我的查詢

Select a.cSubGroupName,a.cAddedBy,a.dAddedOn,b.cGroupName 
from sys_Log_Account_SubGroup a,sys_Account_Primary_Group b 
where a.cAuthorizedStatus='Pending' and a.nGroupCode=b.nGroupCode 

我試圖執行使用Lambda expression相同的查詢。

回答

2
var query = tA 
    .Where(a => a.cAuthorizedStatus == "Pending") 
    .Join(tB, a => a.nGroupCode, b => b.nGroupCode, (a, b) => new 
    { 
     cSubGroupName = a.cSubGroupName, 
     cAddedBy = a.cAddedBy, 
     dAddedOn = a.dAddedOn, 
     cGroupName = b.cGroupName 
    }); 

var query = tA 
    .Join(tB, a => a.nGroupCode, b => b.nGroupCode, (a, b) => new 
    { 
     cSubGroupName = a.cSubGroupName, 
     cAddedBy = a.cAddedBy, 
     dAddedOn = a.dAddedOn, 
     cGroupName = b.cGroupName, 
     cAuthorizedStatus = a.cAuthorizedStatus 
    }) 
    .Where(j => j.cAuthorizedStatus == "Pending") 
    .Select(j => new 
    { 
     cSubGroupName = j.cSubGroupName, 
     cAddedBy = j.cAddedBy, 
     dAddedOn = j.dAddedOn, 
     cGroupName = j.cGroupName 
    }); 

需要注意的是,如果你想明確地排除返回集合的cAuthorizedStatus列的最後一個選擇纔是必需的。

+0

感謝您的答案,試圖理解表達,謝謝。 – freebird 2012-07-30 09:19:09

+0

@freebird。 .Join方法需要:1.設置爲(內部)連接2.連接左鍵設置3.鍵設置連接右鍵4.輸出設置(列表)。 – 2012-07-30 09:22:06