C# DataTable表内数据计算问题!!紧急求助!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# DataTable表内数据计算问题!!紧急求助!!相关的知识,希望对你有一定的参考价值。

DataTable如图所示。 计算id1和id2之间的weight,方法是当同时存在于一个post里时,weight+1;当在同一个时间同一个帖子发生时,weight+2者所包含帖子数的乘积。如:id1和id2同时存在于post1和post3,所以weight1=2;又因第3条数据(id1)和最后两条数据(id2)同时发生在一个帖子里的同一个时间点,weight2=1*2=2。所以,weight=weight1+weight2 。
自己想的是提取每个post和time为固定值的子表格,但是越套越乱了额,不知道这种思路是否可取?
各位大神求思路求代码啊 麻烦注释清楚方便学习 非常感谢
并不是database导入的数据 是从csv转过来的 所有没有database实体数据源存在

参考技术A             var query = from t in dt.AsEnumerable()
                        group t by new
                        
                            t1 = t.Field<int>("id"),
                            t2 = t.Field<int>("post")
                         into m
                        group m by new
                        
                            t3 = m.Key.t2
                        
                            into n
                            select new
                            
                                Post = n.Key.t3,
                                Count = n.Count()
                            ;

            int weight1 = query.Count(p => p.Count == 2);

weight1算法如上:



weight2实在没看懂你描述的什么意思;

参考技术B 小兄弟,虽然你看到的是这些数据,但是datatable一般是从数据库转化,而来的,做这种统计运算,一般是在数据库里面通过sql写聚合函数,然后再读出来绑定到datatable上。当然如果你不想从数据源源头操作,也行,是通过DataTable.Select() 写条件语句,但是比较麻烦,要自己写一些子方法和判断条件。 参考技术C 你这是数据库的数据吧,这样的话为什么不直接在数据库中select出来,比如weight1应该是
select sum(a.count) from (select count(*) as count from tablename group by id,post) a

weight2=1*2那个1我没看明白是什么意思,但应该是跟数据select count(*) from tablename group by id,time相关的。
参考技术D 木看懂你要表达的问题

以上是关于C# DataTable表内数据计算问题!!紧急求助!!的主要内容,如果未能解决你的问题,请参考以下文章

求问 C#如何将json字符串转为datatable 求详细解答

求指导用C#借助npoi将excel导入mysql数据库(或者dataset、datatable)!!!!!

DataTable的MergeCOPYAcceptChange使用说明

C#在datatable中怎么筛选数据?

c#怎么计算Datatable里面数据的合计和总计

C#两个datagridview分别绑定了相同结构的内容不同的DATATABLE,求两个datagridview的横纵滚动条同步滚动