var Items1 = FROM i in Items
select i;
var Items2 = FROM i in Items
GROUP i BY i.code into groupItems
select new {ItemCode2 =(int)groupItems.Key, TTLQty= groupItems.Max(i=>i.Qty!=null), TTLAvailQty= groupItemsr.Max(i => i.AvailQty != null) };
var Result = (from i1 in Items1
join i2 in Items2 on i1.ItemCode equals i2.ItemCode2 into i3
from i4 in i3.DefaultIfEmpty()
select new { X = i1.col1,Y=i1.col2, Y =i4. }).Take(100);