Hi,
Please try this.
List<table1> lstt1 = new List<table1>();
lstt1.Add(new Table1() { IDPart1 = "1A", Type = "T1" });
lstt1.Add(new Table1() { IDPart1 = "1A", Type = "T2" });
List<table2> lstt2 = new List<table2>();
lstt2.Add(new Table2() { IDPart1 = "1A", Range = 100 });
lstt2.Add(new Table2() { IDPart1 = "1A", Range = 200 });
lstt2.Add(new Table2() { IDPart1 = "1A", Range = 300 });
var items = from itm1 in lstt1
join itm2 in lstt2 on itm1.IDPart1 equals itm2.IDPart1
into grouping
from itm2 in grouping.DefaultIfEmpty(new Table2())
select new { itm1.IDPart1, itm1.Type, itm2.Range };