111,119
社区成员
发帖
与我相关
我的任务
分享datatable有一列,如下:
一班
一班
二班
二班
二班
三班
想统计出每个班的名字,还有每个班出现的次数,
怎么搞?
你可以使用 LINQ 查询来对 DataTable 进行统计。首先,你需要将 DataTable 转换为一个包含 DataRow 的集合,然后使用 LINQ 查询来统计不同项和计数。
using System;
using System.Data;
using System.Linq;
public class Program
{
public static void Main()
{
// 创建 DataTable 并添加数据
DataTable dataTable = new DataTable();
dataTable.Columns.Add("班级");
dataTable.Rows.Add("一班");
dataTable.Rows.Add("一班");
dataTable.Rows.Add("二班");
dataTable.Rows.Add("二班");
dataTable.Rows.Add("二班");
dataTable.Rows.Add("三班");
// 使用 LINQ 查询统计不同项和计数
var result = from row in dataTable.AsEnumerable()
group row by row.Field<string>("班级") into g
select new
{
班级 = g.Key,
出现次数 = g.Count()
};
// 输出统计结果
foreach (var item in result)
{
Console.WriteLine("班级: " + item.班级 + ", 出现次数: " + item.出现次数);
}
}
}
这段代码会输出以下结果:
班级: 一班, 出现次数: 2
班级: 二班, 出现次数: 3
班级: 三班, 出现次数: 1
#
这样就统计出了每个班级的名称和出现次数。
不是可以执行sql查询吗?
除了使用 LINQ,还可以使用 C# 的 foreach 循环和 DataTable 的 Select 方法来查询和统计 DataTable 中的数据。具体步骤如下:
定义一个类来表示班级和出现次数,如下所示:
public class ClassCount
{
public string ClassName { get; set; }
public int Count { get; set; }
}
遍历 DataTable 中的每一行数据,将每个班级和出现次数结合起来,如下所示:
DataTable dataTable = // DataTable with columns "ClassName" and "Count"
var classCounts = new List();
foreach (DataRow row in dataTable.Rows)
{
var className = row["ClassName"].ToString();
var count = int.Parse(row["Count"].ToString());
var classCount = new ClassCount
{
ClassName = className,
Count = count
};
classCounts.Add(classCount);
}
上述代码中,我们使用了 foreach 循环遍历 DataTable 中的每一行数据,并将每个班级和出现次数结合起来,保存到一个 List 中。
输出每个班级和出现次数,如下所示:
foreach (var classCount in classCounts)
{
Console.WriteLine($"{classCount.ClassName} 出现了 {classCount.Count} 次");
}
上述代码中,我们使用了 foreach 循环遍历 List 中的每个元素,并输出每个班级和出现次数。