DATATABLE C#上的多个组 [英] Multiple group by on DATATABLE C#

查看:86
本文介绍了DATATABLE C#上的多个组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好朋友,



我的桌子结构如下:



水果名称|烂了



Apple - 是的

Apple - 没有

Apple - 没有

Apple - 没有

橙色 - 没有

橙色 - 没有

橙色 - 没有

橙色 - 没有

橙色 - 是的

橙色 - 是的

橙色 - 没有



我想要将此信息分组并需要形成具有以下结构的表格。



水果名称|没有烂了总计没有

Apple - 1 - 4

橙色 - 2 - 7



你能帮我一下吗我应该在数据表的SELECT帮助下得到这个小组吗?



我尝试了什么:



在Select on datatable的帮助下,我们可以分组。

但是如何找出用特定类别检查的记录总数?

解决方案

试试这个:

 DataTable dt =  new  DataTable(); 
dt.Columns.AddRange( new DataColumn []
{
new DataColumn( Fruit Name typeof string )),
new DataColumn( 烂了 typeof string ))
});

dt.Rows.Add( new object [] { Apple });
dt.Rows.Add( new object [] { Apple 没有});
dt.Rows.Add( new object [] { Apple 没有});
dt.Rows.Add( new object [] { Apple 没有});
dt.Rows.Add( new object [] { 橙色 没有});
dt.Rows.Add( new object [] { 橙色 没有});
dt.Rows.Add( new object [] { 橙色 没有});
dt.Rows.Add( new object [] { 橙色 没有});
dt.Rows.Add( new object [] { 橙色 });
dt.Rows.Add( new object [] { 橙色 });
dt.Rows.Add( new object [] { 橙色 没有});

var result = dt.AsEnumerable()
.GroupBy(x => x.Field< string>( Fruit Name))
.Select(grp = > new
{
FruitName = grp.Key,
NoOfRotten = grp.Count(x => ; x.Field< string>( 烂了)== yes),
TotalNo = grp.Count()
})
.ToList( );

Console.WriteLine( {0} \t | \t {1} \t | \t {2} FruitName NoOfRotten TotalNo);
foreach var r in result)
{
Console.WriteLine( {0} \t | \ t {1} \t | \t {2},r.FruitName,r.NoOfRotten,r.TotalNo);
}





结果:

 FruitName | NoOfRotten | TotalNo 
Apple | 1 | 4
Orange | 2 | 7


Hello Friends,

I am having the table with below structure :

Fruit Name | Is Rotten

Apple - yes
Apple - no
Apple - no
Apple - no
Orange - no
Orange - no
Orange - no
Orange - no
Orange - yes
Orange - yes
Orange - no

I want to group this information and need to form the table with below structure.

Fruit name | no of rotten | total no
Apple - 1 - 4
Orange - 2 - 7

Can you please help me how should I get this group by with the help of SELECT on data table?

What I have tried:

With the help of Select on datatable, we can get group by.
But how to find out the total no of records checked with particular category?

解决方案

Try this:

DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[]
	{
		new DataColumn("Fruit Name", typeof(string)),
		new DataColumn("Is Rotten", typeof(string))		
	});

dt.Rows.Add(new object[]{"Apple", "yes"});
dt.Rows.Add(new object[]{"Apple", "no"});
dt.Rows.Add(new object[]{"Apple", "no"});
dt.Rows.Add(new object[]{"Apple", "no"});
dt.Rows.Add(new object[]{"Orange", "no"});
dt.Rows.Add(new object[]{"Orange", "no"});
dt.Rows.Add(new object[]{"Orange", "no"});
dt.Rows.Add(new object[]{"Orange", "no"});
dt.Rows.Add(new object[]{"Orange", "yes"});
dt.Rows.Add(new object[]{"Orange", "yes"});
dt.Rows.Add(new object[]{"Orange", "no"});

var result = dt.AsEnumerable()
	.GroupBy(x=>x.Field<string>("Fruit Name"))
	.Select(grp=> new
	{
		FruitName = grp.Key,
		NoOfRotten = grp.Count(x=>x.Field<string>("Is Rotten")=="yes"),
		TotalNo = grp.Count()
	})
	.ToList();

Console.WriteLine("{0}\t|\t{1}\t|\t{2}", "FruitName", "NoOfRotten", "TotalNo");
foreach(var r in result)
{
	Console.WriteLine("{0}\t|\t{1}\t|\t{2}", r.FruitName, r.NoOfRotten, r.TotalNo);
}



Result:

FruitName  |  NoOfRotten  |  TotalNo
Apple  |  1  |  4
Orange  |  2  |  7


这篇关于DATATABLE C#上的多个组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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