如何获得“计数”和“SUM”在数据表C#中 [英] How to get "count" and "SUM" in datatable C#

查看:113
本文介绍了如何获得“计数”和“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 by PREP 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆