加盟是LAMBDA形式杂乱,但这里有云:
CoachingDef.FormCategory
.Join(CoachingLang.ExpandedForm,
Fc => new {Fc.FormID,
DictionaryId = -2147483645,
PropertyId = -2147483647} // primary key
Ef => new {Ef.FormId,
Ef.DictionaryId,
Ef.PropertyId} // foreign key
(Fc,Ef) => new {Fc, Ef})
.Join(CoachingLang.ExpandedCategory, // the "left" side is now the merged Fc/Ef type
FcEf => new {FeEf.Fc.CategoryID,
DictionaryId = -2147483645,
PropertyId = -2147483647} // primary key
Ec => new {Ec.CategoryId,
Ec.DictionaryId,
Ec.PropertyId} // foreign key
(FcEf,Ec) => new {FcEf.Fc, FcEf.Ef, Ec})
.Select(FcEfEc => new {Translation = FcEfEc.Ef.Translation +' - '+ FcEfEc.Ec.Translation,
FcEfEc.Fc.FormCategoryID,
FcEfEc.Ef.FormId,
FcEfEc.Ef.Translation,
Ec.CategoryId,
Ec.Translation
})
这是一个在查询语法干净了一点:
from Fc in CoachingDef.FormCategory
join Ef in CoachingLang.ExpandedForm on
new {Fc.FormID,
DictionaryId = -2147483645,
PropertyId = -2147483647}
equals new { Ef.FormId,
Ef.DictionaryId,
Ef.PropertyId}
join Ec in CoachingLang.ExpandedCategory on
new {Fc.CategoryID,
DictionaryId = -2147483645,
PropertyId = -2147483647}
equals new Ec.CategoryId,
Ec.DictionaryId,
Ec.PropertyId}
select new {Translation = Ef.Translation +' - '+ Ec.Translation,
Fc.FormCategoryID,
Ef.FormId,
Ef.Translation,
Ec.CategoryId,
Ec.Translation}