如何获得“计数”和“SUM”在数据表C#中 [英] How to get "count" and "SUM" in datatable C#
本文介绍了如何获得“计数”和“SUM”在数据表C#中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在我的应用程序中,我有一个名为TB的数据表,其中包含以下列:BL,PREP,NBLIG,QTY和ERRTYPE。这是表中数据的一个例子
In my application I have a datatable named TB which contains the following columns: BL, PREP, NBLIG, QTY and ERRTYPE. here is an example of data from the table
BL PREP NBLIG QTY ERRTYPE
125485 P1 5 125 RNF
189654 P2 12 762 RNF
156985 P2 3 36 FNR
219874 P1 36 5423 OTH
123698 P3 6 112 OTH
719736 P1 25 998 RNF
我想为每个PREP计算BL的数量,NBLIG和QTY的总和以及每个ERRTYPE的数量。然后将这些数据放入datagridview中,如下所示:
I want, for each PREP, to calculate the number of BL the sum of NBLIG and QTY and the number of each ERRTYPE. Then put this data in a datagridview as following:
PREP NB_BL TOTLIG TOTQTY TOTRNF TOTFNR TOTOTH
P1 3 66 6546 2 0 1
P2 2 15 798 1 1 0
P3 1 6 112 0 0 1
我尝试了什么:
你能帮我找到合适的方法在我的代码中使用吗?
我是使用数据表的新手
谢谢
What I have tried:
Can you help me to find the right method to use in my code?
i'm new in using datatable
thanks
推荐答案
这很简单。您需要做的就是按PREP
字段对数据进行分组。请查看以下解决方案:
It's quite simple. All what you need to do is to group data byPREP
field. Please, check out below solution:
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[]
{
new DataColumn("BL", typeof(int)),
new DataColumn("PREP", typeof(string)),
new DataColumn("NBLIG", typeof(int)),
new DataColumn("QTY", typeof(int)),
new DataColumn("ERRTYPE", typeof(string))
});
dt.Rows.Add(new object[]{125485, "P1", 5, 125, "RNF"});
dt.Rows.Add(new object[]{189654, "P2", 12, 762, "RNF"});
dt.Rows.Add(new object[]{156985, "P2", 3, 36, "FNR"});
dt.Rows.Add(new object[]{219874, "P1", 36, 5423, "OTH"});
dt.Rows.Add(new object[]{123698, "P3", 6, 112, "OTH"});
dt.Rows.Add(new object[]{719736, "P1", 25, 998, "RNF"});
var result = dt.AsEnumerable()
.GroupBy(x=>x.Field<string>("PREP"))
.Select(grp=>new
{
PREP = grp.Key,
NB_BL = grp.Count(),
TOTLIG = grp.Where(x=>x.Field<string>("PREP")==grp.Key).Sum(x=>x.Field<int>("NBLIG")),
TOTQTY = grp.Where(x=>x.Field<string>("PREP")==grp.Key).Sum(x=>x.Field<int>("QTY")),
TOTRNF = grp.Where(x=>x.Field<string>("ERRTYPE")=="RNF").Count(),
TOTFNR = grp.Where(x=>x.Field<string>("ERRTYPE")=="FNR").Count(),
TOTOTH = grp.Where(x=>x.Field<string>("ERRTYPE")=="OTH").Count()
})
.ToList();
如果这是在数据库中,那么你应该可以使用SQL COUNT(),AVG()和SUM()函数 [ ^ ]
请参阅 DataTable Class(系统.Data) [ ^ ]。
您可以使用DataTable.Compute方法。
检查这个链接了解更多信息。 DataTable.Compute Method(String,String)(System .Data) [ ^ ]
You can use DataTable.Compute method.
Check this link for more information. DataTable.Compute Method (String, String) (System.Data)[^]
这篇关于如何获得“计数”和“SUM”在数据表C#中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文