using System.Collections.Generic;
using System.Collections.Specialized;
using System.Threading.Tasks;
public string BookingId { get; internal set; }
public string Name { get; internal set; }
public double Weight { get; internal set; }
public string WeightUnit { get; internal set; }
public double Volume { get; internal set; }
public string VolumeUnit { get; internal set; }
public int PackageQuantity { get; internal set; }
public string PackageQuantityUnit { get; internal set; }
public int CustomerProductQuantity { get; internal set; }
public string CustomerProductQuantityUnit { get; internal set; }
public string OrderBookingId { get; internal set; }
public static void Main()
List<One> tableOne = new List<One>()
new One() { Weight = 25, BookingId = "aaa", Volume = 11 },
new One() { Weight = 12, BookingId = "aaa", Volume = 5 },
new One() { Weight = 2, BookingId = "aaa", Volume = 8 },
new One() { Weight = 8, BookingId = "aaa", Volume = 7 },
List<Two> tableTwo = new List<Two>()
var customerOrderResponse =
firstData => firstData.BookingId,
secData => secData.OrderBookingId,
(firstData, secData) => new
OrderNumber = firstData.Name,
Weight = firstData.Weight,
WeightUnit = firstData.WeightUnit,
Volume = firstData.Volume,
VolumeUnit = firstData.VolumeUnit,
PackageQuantity = firstData.PackageQuantity,
PackageQuantityUnit = firstData.PackageQuantityUnit,
CustomerProductQuantity = firstData.CustomerProductQuantity,
CustomerProductQuantityUnit = firstData.CustomerProductQuantityUnit,
}).GroupBy(co => co.OrderNumber)
var itemsList = items.ToList();
string commonVolumeUnit = itemsList[0].VolumeUnit;
string commonWeightUnit = itemsList[0].WeightUnit;
TotalVolume = itemsList.Sum(x => ConvertVolume(x.Volume, x.VolumeUnit, commonVolumeUnit)),
TotalWeight = itemsList.Sum(x => ConvertWeight(x.Weight, x.WeightUnit, commonWeightUnit)),
TotalVolumeUnit = commonVolumeUnit,
TotalWeightUnit = commonWeightUnit,
.SelectMany((fullOrderData) =>
return fullOrderData.Items.Select(x =>
TotalVolume = fullOrderData.TotalVolume,
TotalWeight = fullOrderData.TotalWeight,
TotalVolumeUnit = fullOrderData.TotalVolumeUnit,
TotalWeightUnit = fullOrderData.TotalWeightUnit,
OrderNumber = x.OrderNumber,
WeightUnit = x.WeightUnit,
VolumeUnit = x.VolumeUnit,
PackageQuantity = x.PackageQuantity,
PackageQuantityUnit = x.PackageQuantityUnit,
CustomerProductQuantity = x.CustomerProductQuantity,
CustomerProductQuantityUnit = x.CustomerProductQuantityUnit,
.GroupBy(co => co.OrderNumber)
double totalWeight = customerOrderResponse.First().TotalWeight;
double totalVolume= customerOrderResponse.First().TotalVolume;
Console.WriteLine(totalWeight);
Console.WriteLine(totalVolume);
private static double ConvertWeight(double weight, string weightUnit, string newWeightUnit)
private static double ConvertVolume(double volume, string volumeUnit, string newVolumeUnit)