DataTable Group By或运算 Linq Aggregate的使用

 class Program
    {
        static void Main(string[] args)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Name", typeof(System.String));
            dt.Columns.Add("Value", typeof(System.Int32));

            dt.Rows.Add("07", 1);
            dt.Rows.Add("07", 2);
            dt.Rows.Add("07", 4);
            dt.Rows.Add("07", 8);
            dt.Rows.Add("07", 4);

            dt.Rows.Add("08", 2);
            dt.Rows.Add("08", 8);
            dt.Rows.Add("08", 16);
            dt.Rows.Add("08", 8);
            dt.Rows.Add("08", 16);

            var query = from t in dt.AsEnumerable()
                        group t by new { Name = t.Field<string>("Name") } into m
                        select new
                        {
                            Name = m.Key.Name,
                            Sum = m.Sum(n => n.Field<int>("Value")),
                            CustomerValue = m.Aggregate(0, (d, n) =>
                            {
                                return d | n.Field<int>("Value");
                            })
                        };

            query.ToList().ForEach(p =>
            {
                Console.WriteLine($"Name:{p.Name}\tSum:{p.Sum}\tCustomerValue:{p.CustomerValue}");
            });
            Console.ReadKey();
        }
    }

时间: 2024-10-10 13:42:26

DataTable Group By或运算 Linq Aggregate的使用的相关文章

Linq DataTable Group By 分组显示人员明细

原始数据: 分组后的输出结果: 源代码: 1 public static void PrintPersons() 2 { 3 //准备数据 4 DataTable dt = new DataTable(); 5 dt.Columns.Add(new DataColumn("ID", typeof(int))); 6 dt.Columns.Add(new DataColumn("UserName", typeof(string))); 7 dt.Columns.Add

inq to datatable group by 多列 实现

using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication2 { internal class Program { private static void Main(string[] args) { DataTable dt = n

DataTable的筛选,过滤后绑定数据源的两种方法(DataTable的select和使用linq返回List集合)

一般数据处理使用DataTable的情况会很多,而我们很多时候会对得到的DataTable的数据进行筛选后绑定到Combobox.GridView.Repeat等控件中,现在分享一下两种DataTable在C#程序中的筛选处理方式. 我们先手动创建一个DataTable  DataTable dt=new DataTable(); DataColumn dtc = new DataColumn("id",typeof(string));            dt.Columns.Ad

Datatable筛选中Foreach、Linq、Select几种方法效率比较

假设要在Datatable中选出符合要求的一串数据,可以有Foreach循环.Linq语句和Select语句几种方法,构造一个简单数据后做了下效率对比,发现Linq最慢,其次Foreach,最快是Select. 代码如下: static void Main(string[] args) { int dataCount = 100000; DataTable dt = new DataTable(); dt.Columns.Add("MacID", typeof(int)); dt.Co

20180519001 - DataTable Group by功能参考

DataSet6 = DataSet1.Copy(); DataRow[] dr = DataSet6.Tables[0].Select(" 完工状态 = '完工异常' "); DataTable dt1 = DataSet6.Tables[0].Clone(); for (int i = 0; i < dr.Length; i++) { dt1.ImportRow((DataRow)dr[i]); //this.Text = i.ToString(); } // Group b

Linq Aggregate的三种用法

int i = 10;            int[] numbers = { 1, 2, 3 };            // 1+2+3 = 6            int a = numbers.Aggregate((prod, n) => prod + n);            // 10+1+2+3 = 16            int b = numbers.Aggregate(i, (prod, n) => prod + n);            // (10+1+

(转)C#用Linq实现DataTable的Group by数据统计

本文转载自:http://www.cnblogs.com/sydeveloper/archive/2013/03/29/2988669.html 1.用两层循环计算,前提条件是数据已经按分组的列排好序的. DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[] { new DataColumn("name", typeof(string)), new DataColumn("sex",

C#用DataTable实现Group by数据统计

1.用两层循环计算,前提条件是数据已经按分组的列排好序的. DataTable dt = new DataTable();dt.Columns.AddRange(new DataColumn[] { new DataColumn("name", typeof(string)),                                        new DataColumn("sex", typeof(string)),                 

mongodb使用aggregate、group、match实现mysql中的having(count(1)&gt;1)的功能

关系型数据库中分组去重一般都是group by - having(count(1)>1)-赛选出来重复的记录组,然后一条sql搞定,但是在mongodb里面,没有这么方便了,需要自己写脚本来实现,可以通过aggregate.group.match来操作处理. 1,准备录入测试数据 db.stu.insert({cid:1,age:14,name:'gom1'}); db.stu.insert({cid:1,age:12,name:'jack2'}); db.stu.insert({cid:2,a