Вы можете просто использовать существующий метод Join
public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>(
this IEnumerable<TOuter> outer,
IEnumerable<TInner> inner,
Func<TOuter, TKey> outerKeySelector,
Func<TInner, TKey> innerKeySelector,
Func<TOuter, TInner, TResult> resultSelector
)
Например:
table1.Join(table2, t1 => t1.Key, t2 => t2.Key, (t1, t2) => new { Table1 = t1, Table2 = t2 });
можно найти больше перегрузок и примеров http://msdn.microsoft.com/en-us/library/system.linq.enumerable.join.aspx
Простите за c #примеры