用于连接操作的Lambda表达式

时间:2012-07-30 09:11:23

标签: c# lambda

我有两张桌子上的SQL query

这是我的查询

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执行相同的查询。

1 个答案:

答案 0 :(得分: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列时才需要最后一次选择。