LINq TO datetable

DataTable dt = SQLLayer.Get工作量统计(beginDate, endDate);
            var querySum = from t in dt.AsEnumerable()
                           group t by t.Field<string>("库房")
                               into g
                               select new
                                   {
                                       _库房 = g.Key,
                                       _品次_入库 = g.Sum(t => t.Field<decimal>("品次_入库")),
                                       _品种_入库 = g.Sum(t => t.Field<decimal>("品种_入库")),
                                       _金额_入库 = g.Sum(t => t.Field<decimal>("金额_入库")),
                                       _品次_出库 = g.Sum(t => t.Field<decimal>("品次_出库")),
                                       _品种_出库 = g.Sum(t => t.Field<decimal>("品种_出库")),
                                       _金额_出库 = g.Sum(t => t.Field<decimal>("金额_出库")),
                                       _品种_现存 = g.Sum(t => t.Field<decimal>("品种_现存")),
                                       _金额_现存 = g.Sum(t => t.Field<decimal>("金额_现存"))
                                   };


            DataTable newDt = new DataTable();


            DataRow newRow = null;
            newDt.Columns.Add("库房", typeof(string));
            newDt.Columns.Add("品次_入库", typeof(decimal));
            newDt.Columns.Add("品种_入库", typeof(decimal));
            newDt.Columns.Add("金额_入库", typeof(decimal));
            newDt.Columns.Add("品次_出库", typeof(decimal));
            newDt.Columns.Add("品种_出库", typeof(decimal));
            newDt.Columns.Add("金额_出库", typeof(decimal));
            newDt.Columns.Add("品种_现存", typeof(decimal));
            newDt.Columns.Add("金额_现存", typeof(decimal));


            foreach (var query in querySum)
            {
                newRow = newDt.NewRow();
                newRow["库房"] = query._库房;
                newRow["品次_入库"] = query._品次_入库;
                newRow["品种_入库"] = query._品种_入库;
                newRow["金额_入库"] = query._金额_入库;
                newRow["品次_出库"] = query._品次_出库;
                newRow["品种_出库"] = query._品种_出库;
                newRow["金额_出库"] = query._金额_出库;
                newRow["品种_现存"] = query._品种_现存;
                newRow["金额_现存"] = query._金额_现存;
                newDt.Rows.Add(newRow);


            }


/

DataTable dt = bind();
            DataTable result = dt.Select().GroupBy(x => new { Product = x["Product"] }).Select(x => { DataRow newDr = dt.NewRow(); newDr["Product"] = x.Key.Product; return newDr; }).CopyToDataTable();
            dataGridView1.DataSource = result;

/

3、使用linq to DataTable group by实现

var  query =  from  t  in  dt.AsEnumerable()
            group t by  new  { t1 = t.Field< string >( " name " ), t2 = t.Field< string >( " sex " ) } into m
             select   new
            {
                name = m.Key.t1,
                sex = m.Key.t2,
                score = m.Sum(n => n.Field< decimal >( " score " ))
            };
if  (query.ToList().Count >  0 )
{
    query.ToList().ForEach(q =>
    {
        Console.WriteLine(q.name +  " , "  + q.sex +  " , "  + q.score);
    });
}  


 private void bbb()
    {


        DataTable dt = new DataTable();
        dt.Columns.AddRange(new DataColumn[] { new DataColumn("name", typeof(string)), 
                                                   new DataColumn("score", typeof(int)),new DataColumn("score3", typeof(int)) });


        dt.Rows.Add(new object[] { "张三", 1, 75 });
        dt.Rows.Add(new object[] { "张三", 4,55 });
        dt.Rows.Add(new object[] { "李四", 100,55 });
        dt.Rows.Add(new object[] { "李四", 100 ,55});
        dt.Rows.Add(new object[] { "王五", 77 ,55});


        DataTable dtLwolf = dt.Clone();


        DataTable dtName = dt.DefaultView.ToTable(true, "name", "score3");
        for (int i = 0; i < dtName.Rows.Count; i++)
        {
            DataRow[] rows = dt.Select("name='" + dtName.Rows[i][0] + "'");
            //temp用来存储筛选出来的数据
            DataTable temp = dtLwolf.Clone();
            foreach (DataRow row in rows)
            {
                temp.Rows.Add(row.ItemArray);
            }


            DataRow dr = dtLwolf.NewRow();
            dr[0] = dtName.Rows[i][0].ToString();
            dr[1] = temp.Compute("sum(score)", "");
            dr[2] = dtName.Rows[i][1].ToString();
           
            dtLwolf.Rows.Add(dr);
        }
        dataGridView1.DataSource = dtLwolf;
    
    }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值