簡體   English   中英

Linq與Lambda相當於SQL

[英]Linq with Lambda equivalent of SQL

我對實體框架比較陌生,我一直在嘗試用Lambda寫一個包含簡單連接的Linq語句。 我有三張桌子:員工 - StaffRole - 角色。

部分圖

我想要一個滿足某種條件的特定角色的工作人員。 在常規SQL中編寫它非常簡單:

SELECT *
FROM Staff s
INNER JOIN StaffRole sr ON s.StaffId = sr.StaffId
INNER JOIN Role r ON sr.RoleId = r.RoleId
WHERE r.Description = 'SpecialisedHealthManager'
AND s.PrimaryShm = 0

現在,用Linq語句寫它並沒有給我帶來太多運氣。 我想它會是這樣的:

var actingShm = db.Staff.Join(db.StaffRole,
                           inner => inner.StaffId,
                           outer => outer.Role,
                           (outer, inner) => new
                           {
                               StaffId = inner.StaffId,
                               FirstName = inner.Staff.FirstName,
                               Surname = inner.Staff.Surname,
                               SamAccountName = inner.Staff.SamAccountName,
                               RoleId = outer.Description
                           });

不用說,這不起作用..

嘗試以這種方式使用它:

var list = from s in Staff
join sr in StaffRole on s.StaffId equals sr.StaffId
join r in Role on sr.RoleId equals r.RoleId
where r.Description == 'SpecialisedHealthManager' && s.PrimaryShm == 0
select new
{
   StaffId = s.StaffId,
   FirstName = s.Staff.FirstName,
   Surname = s.Staff.Surname, 
   SamAccountName = s.Staff.SamAccountName,
   RoleId = r.Description
});

如果你真的想用方法語法LINQ來做這個,請看這里:

所以多個表與lambda一起加入

另見:

http://msdn.microsoft.com/pl-pl/library/bb534675(v=vs.110).aspx

用於Join擴展方法語法。 代碼中顯示的用法是錯誤的。

你應該設置你的關聯,這樣你才能做到這一點......

var actingShm = from s in db.Staff
                from r in s.Roles
                where r.Description == "SpecialisedHealthManager"
                select new
                       {
                           StaffId = s.StaffId,
                           FirstName = s.FirstName,
                           Surname = s.Surname,
                           SamAccountName = s.SamAccountName,
                           RoleId = r.Description
                       });

您使用的是Entity Framework還是Linq2SQL?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM