It should be doable to do a join like this
var allSubjects = connection.Get<University.Subjects>();
var allEducationLevels = connection.Get<University.EducationLevels>();
var joined = from subject in allSubjects
join educationLevel in allEducationLevels on subject.SubjectLevel equals educationLevel.Id
select new { Subject = subject, EducationLevel = educationLevel.EducationLevel };
var allSubjects = joined.ToDictionary(o => o.Subject.Id.ToString(), o => o.EducationLevel + " - " + o.Subject.SubjectName);
Regarding ordering, you can do that after the join like thisvar joined = from subject in allSubjects
join educationLevel in allEducationLevels on subject.SubjectLevel equals educationLevel.Id
orderby subject.SubjectLevel, subject.SubjectName
select new { Subject = subject, EducationLevel = educationLevel.EducationLevel };