Вы можете перевести запрос так:
var ans = standardList.Join(studentList, stad => stad.StandardID, s => s.StandardID, (stad, s) => new { stad, s })
.OrderBy(stads => stads.stad.StandardName).ThenBy(stads => stads.s.StudentName)
.Select(stads => new { stads.s.StudentName, stads.stad.StandardName });
Обратите внимание, что ответ @ JamesFaix предоставляет более эффективную, менее буквальную версию, сочетающую в себе Join
и Select
.
На самом деле это версия для понимания запроса без into
, которая не нужна для вашего запроса:
var studentsWithStandard = from stad in standardList
join s in studentList on stad.StandardID equals s.StandardID
orderby stad.StandardName, s.StudentName
select new {
StudentName = s.StudentName,
StandardName = stad.StandardName
};
Обратите внимание, что строгий перевод вашего запроса будет включать GroupJoin
/ SelectMany
, но в этом нет необходимости, поскольку вы не пытаетесь выполнить левое соединение:
var ans2 = standardList.GroupJoin(studentList, stad => stad.StandardID, s => s.StandardID, (stad, sg) => new { stad, sg })
.SelectMany(stadsg => stadsg.sg.Select(s => new { stadsg.stad, s }))
.OrderBy(stads => stads.stad.StandardName).ThenBy(stads => stads.s.StudentName)
.Select(stads => new { stads.s.StudentName, stads.stad.StandardName });