using System.Collections.Generic;
public static void Main()
var left= new List<Product>(){
new Product(){ID=1,Name="A",Qty1=0,Qty2=5},
new Product(){ID=2,Name="B",Qty1=0,Qty2=52}
var right= new List<Product>(){
new Product(){ID=1,Name="A",Qty1=57,Qty2=0},
new Product(){ID=2,Name="B",Qty1=84,Qty2=0}
var outer=left.Union(right);
Console.WriteLine(outer.Count());
var query = left.Join(right, d => d.ID, e=> e.ID, (f,g) => new Product(){ID = f.ID, Name = f.Name, Qty1 = f.Qty1+g.Qty1, Qty2 = f.Qty2+g.Qty2});
foreach(var item in query)
public string Name{get; set;}
public int Qty1{get; set;}
public int Qty2{get; set;}
Console.WriteLine("ID : {0}", ID);
Console.WriteLine("Name: {0}", Name);
Console.WriteLine("Qty1: {0}", Qty1);
Console.WriteLine("Qty2: {0}", Qty2);