代码改变世界

lambda表达式

2013-04-09 21:43  stulife  阅读(361)  评论(0编辑  收藏  举报

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;


namespace Test
{
class Program
{
static void Main(string[] args)
{
DataTable table = new DataTable();
table.Columns.Add("DateTime");
table.Columns.Add("Dec");

table.Rows.Add("2012/01/01", "0.1");
table.Rows.Add("2012/01/02", "0.2");
table.Rows.Add("2012/01/03", "0.3");

Dictionary<DateTime, decimal> dict = table.AsEnumerable().ToDictionary(c =>Convert.ToDateTime(c["DateTime"].ToString()), c =>decimal.Parse(c["Dec"].ToString()));

List<aa> a = new List<aa>(){
new aa(){ product="11",group="345",dd=Convert.ToDateTime("2012/01/01"),Total=500m},
new aa(){ product="12",group="afdads",dd=Convert.ToDateTime("2012/01/02"),Total=4500m},
new aa(){ product="11",group="345",dd=Convert.ToDateTime("2012/01/01"),Total=600m},
new aa(){ product="13",group="adfa33ds",dd=Convert.ToDateTime("2012/01/03"),Total=590m}

};

var item = a.Select(c =>new{ Total=c.Total
* decimal.Parse(dict.Select(b => new { b.Value, b.Key }).Where(b => b.Key == c.dd).Select(d => d.Value).ToList()[0].ToString())
,
product = c.product,
group=c.group,
dd=c.dd
});

var result= item.GroupBy(c => new { product = c.product, group = c.group, dd = c.dd }).Select(c => new
{
product = c.Key.product,
group=c.Key.group,
dd=c.Key.dd,Total=c.Sum(p=>p.Total)});



Console.ReadLine();


}

public class aa
{
public decimal Total { get; set; }
public string product { get; set; }
public string group { get; set; }
public DateTime dd { get; set; }
}
}
}