• linq 将datatable分组求和在转datatable


    DataTable dt = new DataTable();
    dt.Columns.Add("CustomerID");
    dt.Columns.Add("aa");
    dt.Columns.Add("vv");
    dt.Columns["CustomerID"].DataType = typeof(string);
    dt.Columns["aa"].DataType = typeof(Int32);
    dt.Columns["vv"].DataType = typeof(Int32);
    DataRow row = dt.NewRow();
    row["CustomerID"] = "222";
    row["aa"] = 1;
    row["vv"] = 2;
    dt.Rows.Add(row);
    DataRow row1 = dt.NewRow();
    row1["CustomerID"] = "222";
    row1["aa"] = 1;
    row1["vv"] = 2;
    dt.Rows.Add(row1);
    DataRow row11 = dt.NewRow();
    row11["CustomerID"] = "3";
    row11["aa"] = 1;
    row11["vv"] = 2;
    dt.Rows.Add(row11);
    DataRow row12 = dt.NewRow();
    row12["CustomerID"] = "3";
    row12["aa"] = 1;
    row12["vv"] = 2;

    dt.Rows.Add(row12);
    var query = from t in dt.AsEnumerable().ToList()
    group t by new { t1 = t.Field<string>("CustomerID") } into m
    select new
    {
    name = m.Key.t1,
    score = m.Sum(n => n.Field<Int32>("aa")),
    ss = m.Sum(n => n.Field<Int32>("vv"))
    };


    DataTable dt22= ToDataTable(query.Where(p=>1==1));

    public static DataTable ToDataTable<T>(IEnumerable<T> collection)
    {
    var props = typeof(T).GetProperties();
    var dt = new DataTable();
    dt.Columns.AddRange(props.Select(p => new DataColumn(p.Name, p.PropertyType)).ToArray());
    if (collection.Count() > 0)
    {
    for (int i = 0; i < collection.Count(); i++)
    {
    ArrayList tempList = new ArrayList();
    foreach (PropertyInfo pi in props)
    {
    object obj = pi.GetValue(collection.ElementAt(i), null);
    tempList.Add(obj);
    }
    object[] array = tempList.ToArray();
    dt.LoadDataRow(array, true);
    }
    }
    return dt;
    }

  • 相关阅读:
    编译用到boost相关的东西,问题的解决;以及和googletest库
    看开源代码利器—用Graphviz + CodeViz生成C/C++函数调用图(call graph)
    centos5 升级到centos6
    Go vs Erlang
    Graphviz
    Oracle相关安装经验总结
    学习erlang书籍
    sublime使用总结
    List集合五种遍历方式
    nginx常用命令
  • 原文地址:https://www.cnblogs.com/zhang-wenbin/p/8807258.html
Copyright © 2020-2023  润新知