using System;
using System.Globalization;
using System.Linq;
using System.Collections.Generic;
public class Test
{
public class Stock
{
public int msft { get; set; }
public string id { get; set; }
public int price { get; set; }
public int qty { get; set; }
}
public static void Main()
{
List<Stock> _investments = new List<Stock>()
{
new Stock {id="msft", price =12, qty=20},
new Stock {id="msft", price =53, qty=50},
new Stock {id="csco", price =222, qty=20},
new Stock {id="fb", price =40, qty=100},
};
var result = _investments
.GroupBy(i => i.id)
.Where(g => g.Key == "msft")
.Select(g => new{ id = g.Key, qty = g.Sum(i => i.qty), grp = g })
.Select(x => new
{
x.id,
x.qty,
price = Math.Round(x.grp.Sum(i => (decimal)i.price * i.qty) / x.qty, 2)
});
foreach(var x in result)
Console.WriteLine("id={0} qty={1} price={2}",x.id,x.qty,x.price);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uR2xvYmFsaXphdGlvbjsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIGNsYXNzIFN0b2NrCiAgICB7CiAgICAgICAgcHVibGljIGludCBtc2Z0IHsgZ2V0OyBzZXQ7IH0KICAgICAgICBwdWJsaWMgc3RyaW5nIGlkIHsgZ2V0OyBzZXQ7IH0KICAgICAgICBwdWJsaWMgaW50IHByaWNlIHsgZ2V0OyBzZXQ7IH0KICAgICAgICBwdWJsaWMgaW50IHF0eSB7IGdldDsgc2V0OyB9CiAgICB9CgogICAgICAgIAoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCUxpc3Q8U3RvY2s+IF9pbnZlc3RtZW50cyA9IG5ldyBMaXN0PFN0b2NrPigpCiAgICAgICAgewogICAgICAgICAgICBuZXcgU3RvY2sge2lkPSJtc2Z0IiwgcHJpY2UgPTEyLCBxdHk9MjB9LAogICAgICAgICAgICBuZXcgU3RvY2sge2lkPSJtc2Z0IiwgcHJpY2UgPTUzLCBxdHk9NTB9LAogICAgICAgICAgICBuZXcgU3RvY2sge2lkPSJjc2NvIiwgcHJpY2UgPTIyMiwgcXR5PTIwfSwKICAgICAgICAgICAgbmV3IFN0b2NrIHtpZD0iZmIiLCBwcmljZSA9NDAsIHF0eT0xMDB9LAogICAgICAgIH07CgoJCgkgICB2YXIgcmVzdWx0ID0gX2ludmVzdG1lbnRzCgkgICAuR3JvdXBCeShpID0+IGkuaWQpCiAgICAgICAuV2hlcmUoZyA9PiBnLktleSA9PSAibXNmdCIpCiAgICAgICAuU2VsZWN0KGcgPT4gbmV3eyBpZCA9IGcuS2V5LCAgcXR5ID0gZy5TdW0oaSA9PiBpLnF0eSksIGdycCA9IGcgfSkKICAgICAgIC5TZWxlY3QoeCA9PiBuZXcKICAgICAgIHsKICAgICAgICAgICB4LmlkLAogICAgICAgICAgIHgucXR5LAogICAgICAgICAgIHByaWNlID0gTWF0aC5Sb3VuZCh4LmdycC5TdW0oaSA9PiAoZGVjaW1hbClpLnByaWNlICogaS5xdHkpIC8geC5xdHksIDIpCiAgICAgICB9KTsKICAgCgkgICBmb3JlYWNoKHZhciB4IGluIHJlc3VsdCkKCSAgIAkgIENvbnNvbGUuV3JpdGVMaW5lKCJpZD17MH0gcXR5PXsxfSBwcmljZT17Mn0iLHguaWQseC5xdHkseC5wcmljZSk7Cgl9Cn0=