score:2

Accepted answer
context.table1
    .join(table2, a => a.id, b => b.id, (a, b) => {table1 = a, table2 = b})
    .where(ab => ab.table2.col1.equals("abc"))
    .select(ab => {
        outletcd = ab.table1.id,
        name = ab.table1.name,
        addrline1 = ab.table1.addrline1,
        addrline2 = ab.table1.addrline2,
        city = ab.table1.city,
        zip = ab.table1.zip,
        statecd = ab.table1.statecd,
        ctrycd = ab.table1.ctrycd,
        country = ab.table1.country,
        phone = ab.table1.phone,
    });

score:1

var results = context.table1
    .where( a => a.b.col1.equals("abc")
    .select( x => new sampledto {
        outletcd = a.id,
        //other cols
    })
    .tolist();

foreach( var sampledto in results ) {
    sampledto.table2 = context.table2.where( x => x.condition ).tolist();
}

score:1

// groupjoin teachers and students:
var result = context.teachers.groupjoin(context.students, 
    teacher => teacher.id,             // from each teacher take the id
    student => student.teacherid,      // from each student take the teacherid

    // when they match, group the teacher and all his matching students:
    (teacher, students) => new 
    {                          // make a new object:
                               // get some teacher properties
         name = teacher.name,
         addrline1 = teacher.addrline1,
         ...

         // make a table from the columns from all the teacher's students:
         table2 = students 
            .select(student => new
            {
                col1 = student.col1,
                col2 = student.col2,
            })      
            // here it is clearly to see that col1 comes from student
            // i don't want all students, only those with abc for col1, so:
            .where(studentcolumns => studentcolumns.col1.equals("abc"));

Related Query

More Query from same tag