winforms C#数据表数据到新数据表按列分组并计算非重复

fzsnzjdm  于 2022-11-17  发布在  C#
关注(0)|答案(1)|浏览(152)

我有一个数据表,如下所示:

idworker    idwork  idtask  task    tag
154         192     490     task 1  No
152         192     490     task 1  No
154         192     492     task 2  One
154         192     492     task 2  Two
154         192     492     task 2  Four
152         192     492     task 2  Three
152         192     492     task 2  Four
152         192     492     task 2  Five

我需要创建一个新的数据表,如下所示:

idwork  idtask  task    tag         count
192     490     task 1  No          2
192     492     task 2  One         1
192     492     task 2  Two         1
192     492     task 2  Three       1
192     492     task 2  Four        2
192     492     task 2  Five        1

我是一个新的程序员,我尝试了这个解决方案:C# datatable Group by count and distinct但对我不起作用。
我怎么能得到这个?
谢谢你!

tpxzln5u

tpxzln5u1#

你好,我假设你想按idwork、idtask、task、tag这些字段分组。如果是这样,你可以试试这个-

DataTable result = new DataTable();
        result.Columns.Add("idwork", typeof(int));
        result.Columns.Add("idtask", typeof(int));
        result.Columns.Add("task", typeof(string));
        result.Columns.Add("tag", typeof(string));
        result.Columns.Add("count", typeof(int));
        result = dt.AsEnumerable()
                    .GroupBy(r => new { idwork = r["idwork"], idtask = r["idtask"], task = r["task"], tag = r["tag"] })
                    .Select(g =>
                    {
                        var row = result.NewRow();

                        row["idwork"] = g.Key.idwork;
                        row["idtask"] = g.Key.idtask;
                        row["task"] = g.Key.task;
                        row["tag"] = g.Key.tag;
                        row["count"] = g.Count();
                       

                        return row;

                    })
                    .CopyToDataTable();

相关问题