凄く基本的な事なのですが、

var test = (from a in dataTable1
            join b in datatable2 on new {a.ID, a.date, a.No} equals {b.ID, b.date, b.No}
            select new {
                      a.ID,
                      a.date,
                      a.No,
                      b.coment,
                      b.sozai,
                      a.note
                      }).Distinct();

joinした時の結果なのですが、
これはa.ID, a.date, a.Noが共通のデータしか結果として出てこないのでしょうか?
もし、dataTable1とdatatable2 の共通のデータプラスお互いのテーブルにしかないデータも同時に抽出したい場合はどのようなlinqとなるのでしょうか?
また、 a.note,b.coment,b.sozaiに値が入っていなければ空白もしくはnullとして結果を表示したいです。
ご教授いただけると幸いです。

.net 3.5
windows 8.1