datatable 实现GROUPBY

 /// <summary>
        /// datatable 实现GROUPBY
        /// </summary>
        /// <param name="p_Table"></param>
        /// <returns></returns>
        public DataTable GetGroupTable(DataTable p_Table)
        {
            DataTable _Table = new DataTable();
            _Table.Columns.Add("A", typeof(System.String));
            _Table.Columns.Add("B", typeof(System.String));
            _Table.Columns.Add("C", typeof(System.String));
            _Table.Columns.Add("D", typeof(System.Decimal));
            IList<string> _List = new List<string>();

            DataColumn _Column = new DataColumn("Count", typeof(System.Decimal));//定义新列,显示总和
            p_Table.Columns.Add(_Column);
            _Column.Expression = "convert(_D,'System.Decimal')";
            foreach (DataRow _Row in p_Table.Rows)
            {
                object _A = _Row["A"];
                object _B = _Row["B"];
                object _C = _Row["C"];
                object _D = p_Table.Compute("sum(D)", "A='" + _A + "' ");
                string _Key = _A.ToString();
                if (_List.IndexOf(_Key) == -1)
                {
                    _Table.Rows.Add(new object[] { _A, _B, _C, _D});
                    _List.Add(_Key);
                }
            }
            //p_Table.Columns.Remove("D");


            return _Table;
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DataTable是C#中用于表示内存中的数据表的类。它类似于数据库中的表,可以存储和操作数据。而"from"和"group by"是LINQ查询语句中的关键字,用于从数据源中筛选和分组数据。 在C#中,可以使用LINQ查询语句从DataTable中进行筛选和分组操作。下面是一个示例代码,演示了如何使用LINQ查询语句从DataTable中进行分组操作: ```csharp // 假设有一个名为"myTable"的DataTable对象 DataTable myTable = new DataTable(); // 添加列 myTable.Columns.Add("Name", typeof(string)); myTable.Columns.Add("Age", typeof(int)); // 添加数据 myTable.Rows.Add("John", 25); myTable.Rows.Add("Mary", 30); myTable.Rows.Add("John", 35); myTable.Rows.Add("Mary", 28); // 使用LINQ查询语句进行分组操作 var query = from row in myTable.AsEnumerable() group row by row.Field<string>("Name") into grp select new { Name = grp.Key, Count = grp.Count(), AverageAge = grp.Average(row => row.Field<int>("Age")) }; // 遍历查询结果 foreach (var result in query) { Console.WriteLine($"Name: {result.Name}, Count: {result.Count}, Average Age: {result.AverageAge}"); } ``` 在上面的示例代码中,首先创建了一个名为"myTable"的DataTable对象,并添加了两列(Name和Age)以及一些数据。然后使用LINQ查询语句对数据进行分组操作,按照"Name"列进行分组,并计算每个分组的行数和平均年龄。最后,遍历查询结果并输出。 需要注意的是,使用LINQ查询语句对DataTable进行操作需要先将DataTable转换为可查询的数据源,可以使用`myTable.AsEnumerable()`方法将DataTable转换为可查询的数据源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值