我使用SQL Server 2012和.NET 4從SQL到LINQ,toSql
在SQL我想轉換成C#看起來是這樣的:
SELECT rd.Name, rd.Description, prdv.Value
FROM RoleDetail rd
JOIN Role r ON r.RoleID = rd.RoleID
JOIN PersonRole pr ON pr.RoleID = r.RoleID
LEFT OUTER JOIN PersonRoleDetailValue prdv ON prdv.RoleDetailID = rd.RoleDetailID
WHERE pr.PersonID = 42
多次嘗試和後多浪費時間,當我開始時,我似乎並沒有變得更好。任何幫助表示讚賞。
我更喜歡方法語法,但是查詢語法解決方案也是值得歡迎的。
解決方案(感謝大衛以下B的回答)
下面是兩種可行的解決方案。我希望其他人能夠受益...
方法語法:
var methodSyntax = db.PersonRoles
.Where(pr => pr.PersonID == 42)
.SelectMany(pr => pr.Role.RoleDetails)
.SelectMany(rd => rd.PersonRoleDetailValues.DefaultIfEmpty(), (rd, prdv) => new
{
Name = rd.Name,
Description = rd.Description,
Value = prdv.Value
});
查詢語法:
var querySyntax = from pr in db.PersonRoles
where pr.PersonID == 42
let r = pr.Role
from rd in r.RoleDetails
from prdv in rd.PersonRoleDetailValues.DefaultIfEmpty()
select new
{
Name = rd.Name,
Description = rd.Description,
Value = prdv.Value
};
謝謝
你有沒有想過下載Linqer或LinqPad? – MethodMan
@DJKRAZE,不,我沒有,謝謝。 Linqer的成本,但我會給LinqPad一個去。 – PostureOfLearning
這個問題爲什麼被拒絕投票?聽到有理由的評論會很好,這樣我就可以改進。 – PostureOfLearning