var result = table1.Join(table2, o => o.ProgramID, t => t.ProgramID, (o, t) => new { o.ProgramID, t.Program }) .OrderBy(t => t.Program)
I don't know if it will help, but you can try something like this;
var result = (from o in table1 join t in table2 on o.ProgramID equals t.ProgramID orderby t.Program select new { o.ProgramID, t.Program }).Distinct();