C# Linq left join

Last modified: July 03, 2021
class Stock { public string Sku { get; set; } public string ModelName { get; set; } public string Category { get; set; } public int Qty { get; set; } } class Sales { public string Sku { get; set; } public int SaleRecord { get; set; } } class Program { static void Main(string[] args) { var stock = new List<Stock>() { new Stock{Sku = "001", ModelName = "iphone11", Category = "iPhone 11", Qty = 5555 }, new Stock{Sku = "002", ModelName = "iphone11 pro", Category = "iPhone 11", Qty = 44 }, new Stock{Sku = "003", ModelName = "iphone11 pro max", Category = "iPhone 11", Qty = 100 }, new Stock{Sku = "004", ModelName = "iphone12", Category = "iPhone 12", Qty = 55 }, new Stock{Sku = "005", ModelName = "iphone12 pro", Category = "iPhone 12", Qty = 44 }, new Stock{Sku = "006", ModelName = "iphone12 pro max", Category = "iPhone 12", Qty = 10 }, }; var sale = new List<Sales>() { new Sales{ Sku = "001", SaleRecord = 400 }, new Sales{ Sku = "004", SaleRecord = 600} }; var salesRecord = (from c in stock join d in sale on c.Sku equals d.Sku into ps from d in ps.DefaultIfEmpty() select new { ModelName = c.ModelName, salesrecord = d == null ? "No Sales" : d.SaleRecord.ToString() }); } }