私はこれらの3つのテーブルを持っています:
- FeatureTbl(FeatureId(PK)、FeatureName)
- ParameterTbl(ParameterId(PK)、ParameterName)
- Map_Parameter_To_Feature(MapId(PK)、FeatureId(FK)、ParameterId(FK))
次のSQLをLINQに変換したい:
SELECT
FeatureTbl.FeatureId,
FeatureTbl.FeatureName,
Map_Parameter_To_Feature.ParameterId,
ParameterTbl.ParameterName
FROM ParameterTbl
INNER JOIN Map_Parameter_To_Feature
ON ParameterTbl.ParameterId = Map_Parameter_To_Feature.ParameterId
RIGHT OUTER JOIN FeatureTbl
ON Map_Parameter_To_Feature.FeatureId = FeatureTbl.FeatureId
上記のクエリは次の結果を返します
FeatureId,FeatureName,ParameterId,ParameterName
1 Feat A NULL NULL
2 Feat B 10 Param X
3 Feat B 10 Param Y
4 Feat C NULL NULL
私は次のLINQを作成しました。
(from p in context.ParameterTbls
join mp2f in context.Map_Parameter_To_Feature
on p.ParameterId equals mp2f.ParameterId
join f in context.FeatureTbls
on mp2f.FeatureId equals f.FeatureId
into desiredresult
from r in desiredresult.DefaultIfEmpty()
select new {
r.FeatureId,
r.FeatureName,
mp2f.ParameterId,
p.ParameterName
});
しかし、私はこの結果を得る
FeatureId,FeatureName,ParameterId,ParameterName
2 Feat B 10 Param X
3 Feat B 10 Param Y
上記のSQLをLINQに変換するにはどうすればよいですか?