using System.Collections.Generic;
public static void Main()
List<StoreDetail> storeList = new List<StoreDetail>()
new StoreDetail() { StoreNumber = 1, WarehouseNumber = 4201, AuthorizationOrder = 1 } ,
new StoreDetail() { StoreNumber = 2, WarehouseNumber = 4201, AuthorizationOrder = 2 } ,
new StoreDetail() { StoreNumber = 1, WarehouseNumber = 4202, AuthorizationOrder = 2 } ,
new StoreDetail() { StoreNumber = 1, WarehouseNumber = 4203 , AuthorizationOrder = 3 } ,
new StoreDetail() { StoreNumber = 2, WarehouseNumber = 4207 , AuthorizationOrder = 1 }
List<WareHouseSOS> warehouseSOSList = new List<WareHouseSOS>()
new WareHouseSOS() { WarehouseNumber = 4201, WarehouseName = "W1", StoreList = new List<StoreDetail>()} ,
new WareHouseSOS() { WarehouseNumber = 4202, WarehouseName = "W2", StoreList= new List<StoreDetail>()} ,
new WareHouseSOS() { WarehouseNumber = 4203, WarehouseName = "W3", StoreList = new List<StoreDetail>()} ,
new WareHouseSOS() { WarehouseNumber = 4207, WarehouseName = "W4" , StoreList = new List<StoreDetail>()}
storeList = storeList.GroupBy(x => x.StoreNumber)
.Select(g => g.OrderBy(x => x.AuthorizationOrder).FirstOrDefault()).ToList();
foreach(var str in storeList)
Console.WriteLine(" Store Number: " + str.StoreNumber + " Warehouse Num: " + str.WarehouseNumber + " Authorization Order: " + str.AuthorizationOrder);
foreach (var warehouseSOS in warehouseSOSList)
warehouseSOS.StoreList = storeList.Where(x => x.WarehouseNumber == warehouseSOS.WarehouseNumber).OrderBy(x => x.StoreNumber).ToList();
warehouseSOSList.RemoveAll(x =>x.StoreList.Count() == 0);
foreach (var sos in warehouseSOSList)
Console.WriteLine("WarehouseNum: " + sos.WarehouseNumber + " Warehouse Name: " + sos.WarehouseName + " List of Store " + sos.StoreList);
public class StoreDetail{
public int StoreNumber { get; set; }
public int WarehouseNumber { get; set; }
public int AuthorizationOrder { get; set; }
public class WareHouseSOS
public int WarehouseNumber { get; set; }
public string WarehouseName { get; set; }
public List<StoreDetail> StoreList {get;set;}