Для запроса на основе метода:
var query = ctx.Table1s.Join(ctx.Table2s,
a => new { a.ID1Table1, a.ID2Table1 },
b => new { b.ID1Table2, b.ID2Table2 },
(t1, t2) => new {
t1.ID1Table1, t1.ID2Table1, t1.Value1Table1, t2.ID3Table2, t2.Value1Table2
});
Если имя ключевого столбца в двух таблицах разное, то ему следует присвоить одно и то же имя свойства во внешнем и внутреннем селекторе. например:
var query = ctx.Table1s.Join(ctx.Table2s,
a => new { key1 = a.ID1Table1, key2 = a.ID2Table1 },
b => new { key1 = b.ID1Table2, key2 = b.ID2Table2 },
(t1, t2) => new {
t1.ID1Table1, t1.ID2Table1, t1.Value1Table1, t2.ID3Table2, t2.Value1Table2
});
, чтобы проверить приведенный выше запрос, выведите инструкцию sql:
string sql = ((System.Data.Objects.ObjectQuery)query).ToTraceString();