Here is what I came up with (based on this):
List list3 = (from item1 in list1
join item2 in list2
on item1.ContactID equals item2.ContactID into g
from o in g.DefaultIfEmpty()
select o == null ? item1 :o).ToList();
My favorite part is the big nosed smiley
:o)
Thanks for your help!