C# Linq left join
Last modified: July 03, 2021class 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()
});
}
}