using System.Collections.Generic;
using Newtonsoft.Json.Linq;
[JsonProperty("Order Number")]
public string OrderNumber { get; set; }
[JsonProperty("Order Date")]
public string OrderDate { get; set; }
public string SKU { get; set; }
[JsonProperty("Quantity")]
public string Quantity { get; set; }
public OrderItem Order { get; set; }
public string OrderNumber { get; set; }
public string TotalUnits { get; set; }
public IEnumerable<OrderLine> OrderLines { get; set; }
public string OrderedQty { get; set; }
public string Product { get; set; }
public static void Main(string[] args)
string input = @"[{""Order Number"":""10188"",""Order Date"":""05/06/2021"",""SKU"":""LW80S"",""Quantity"":""3""},{""Order Number"":""10187"",""Order Date"":""05/06/2021"",""SKU"":""LW90L"",""Quantity"":""1""},{""Order Number"":""10187"",""Order Date"":""05/06/2021"",""SKU"":""LW80S"",""Quantity"":""1""},{""Order Number"":""10187"",""Order Date"":""05/06/2021"",""SKU"":""CCDW12"",""Quantity"":""1""},{""Order Number"":""10187"",""Order Date"":""05/06/2021"",""SKU"":""CSS"",""Quantity"":""1""}]";
List<Order> orders = JsonConvert.DeserializeObject<List<Order>>(input);
Dictionary<string, List<OrderLine>> lookup = new Dictionary<string, List<OrderLine>>();
foreach (Order item in orders)
OrderLine newItem = new OrderLine
Product = item.OrderNumber,
OrderedQty = item.Quantity
if (!lookup.ContainsKey(item.OrderNumber))
lookup[item.OrderNumber] = new List<OrderLine> { newItem };
lookup[item.OrderNumber].Add(newItem);
List<OrderBase> results = new List<OrderBase>();
foreach (var kvp in lookup)
TotalUnits = kvp.Value.Count.ToString(),
Console.WriteLine("Response - {0}", JsonConvert.SerializeObject(results, Formatting.Indented));