我需要根據組ID,這些組ID被EMPNO擁有參加所有數據雙重過濾在LINQ
public IEnumerable<EmployeeWithEmail> GetAllEmployeesWithEmail(int EmpNo)
{
using (var context = new SQL_TA_SCOREBOARDEntities1())
{
return (from ea in context.View_SystemAdminMembers
join vh in context.View_HCM on (Int16)ea.EmpNo equals vh.EmpNo
join rl in context.EmployeeAccessLevels on ea.RoleID equals rl.id into outer_join
from subjoin in outer_join
//need code to join all data according to EmpNo's GroupIDs
group new
{
ea.EmpNo,
subjoin.Role,
vh.EmailAddress,
vh.LNameByFName,
ea.Active
} by vh.LNameByFName into grp
let item = grp.FirstOrDefault()
orderby item.Role ascending
select new EmployeeWithEmail
{
EmpNum = item.EmpNo ?? 0,
Role = item.Role,
EmailAddress = item.EmailAddress,
LNameByFname = item.LNameByFName,
Active2 = item.Active ?? false
}).ToList();
}
}
我想我想篩選兩次,並加入普通的數據,但實際上有兩個過濾器,我不知道如何控制。
所以我的輸出會是這樣:
EmpNo ---> __ 01 | 01 | 01 | 01
GroupID ---> __10 | 10 | 20 | 20
Data ---> _________Apple | Apple | Orange | Orange
我可以過濾EMPNO 01和10組ID,但如果在EMPNO屬於兩個組? 對不起,找不到正確的術語。
在此先感謝。
你能寫出一個T-SQL語句來給你想要的嗎?如果是這樣,那會是什麼? (這將幫助我更好地理解你在做什麼之後) – David
我在LINQ中純粹編碼,因爲我對它非常陌生,尤其是SQL。但無論如何,我會立即想出一個看法。 –
SELECT dbo.EmployeeAccess.EmpNo,dbo.View_SystemAdminMembers.LNameByFName AS表達式1,dbo.View_SystemAdminMembers.GroupName AS EXPR2, dbo.View_SystemAdminMembers.Role AS表達式3,dbo.View_SystemAdminMembers.Active,dbo.View_SystemAdminMembers.EmpNo AS Expr4, DBO。 View_SystemAdminMembers.RoleID FROM dbo.EmployeeAccess INNER JOIN dbo.View_SystemAdminMembers ON dbo.EmployeeAccess.GroupID = dbo.View_SystemAdminMembers.GroupID WHERE(dbo.EmployeeAccess.EmpNo = '01') –