DATATABLE C#上的多个组 [英] Multiple group by on 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屋!