C#用DataTable實現Group by資料統計

C#用DataTable實現Group by資料統計

C#用DataTable實現Group by資料統計


資料來源:https://www.796t.com/p/615724.html


code

using System;
using System.Collections.Generic;
using System.Data;

public class Example
{
    public static void Main()
    {
        DataTable dt = new DataTable();
        dt.Columns.AddRange(new DataColumn[] { new DataColumn("name", typeof(string)),
                                         new DataColumn("sex", typeof(string)),
                                         new DataColumn("score", typeof(int)) });
        dt.Rows.Add(new object[] { "张三", "男", 1 });
        dt.Rows.Add(new object[] { "张三", "男", 4 });
        dt.Rows.Add(new object[] { "李四", "男", 100 });
        dt.Rows.Add(new object[] { "李四", "女", 90 });
        dt.Rows.Add(new object[] { "王五", "女", 77 });

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

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

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *