Sql Server 2012 と .NET 4 を使用しています
C# に変換したい Sql は次のようになります。
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
何度か試みて多くの時間を無駄にした後、私は始めたときよりも良くなったようには見えません. どんな助けでも大歓迎です。
私はメソッド構文を好みますが、クエリ構文ソリューションも大歓迎です。
ソリューション(以下のDavid 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
};
ありがとうございました