c# - 从数据表计算组的百分比

标签 c# asp.net datatable

我有一个如下所示的数据表

enter image description here 我的结果应该是 A=40% , B=60% .. 即 2/5 和 3/5 组名可以是A、B、C等...

我如何根据该数据表值计算数字?

最佳答案

您可以使用 LINQ 并将其转换为字典:

DataTable dt = new DataTable("test1");
dt.Columns.AddRange(new DataColumn[] { new DataColumn("TASKID"), new DataColumn("GROUPID"), new DataColumn("GROUPNAME") });
dt.Rows.Add(new object[] { 12, 2, "A" });
dt.Rows.Add(new object[] { 13, 3, "B" });
dt.Rows.Add(new object[] { 12, 2, "A" });
dt.Rows.Add(new object[] { 14, 3, null });
dt.Rows.Add(new object[] { 15, 3, "B" });
var query = (from DataRow row in dt.Rows
                group row by row["GROUPNAME"] into g
                select g).ToDictionary(x => (x.Key.ToString() == "" ? "*" : x.Key.ToString()), x => (int)((x.Count() * 100) / dt.Rows.Count));

遍历字典以显示值:

foreach(KeyValuePair<string,int> kvp in query)
    Console.WriteLine(kvp.Key + " - " + kvp.Value.ToString());

输出:

A - 40
B - 40
* - 20

百分比被转换为一个整数。如果您需要更准确的值,只需更改 (int)((x.Count() * 100)/dt.Rows.Count)

关于c# - 从数据表计算组的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23645557/

相关文章:

Javascript getElementById 无法看到 ASP 服务器控件

c# - 有什么方法可以将 Microsoft word 文档转换为记事本文件 .txt 格式吗?

c# - 使用数据表和 SqlBulkCopy 获取将 bool 值写入 sql 的异常

c# - C# 中具有两个泛型参数的泛型方法

c# - 集合中的重复键处理

javascript - 可折叠面板获取状态

ajax - 数据表在 URL 中传递搜索参数,以便我可以通过电子邮件发送链接

c# - 如何使用 Rx 定期执行代码直到第一次成功执行?

c# - 将 PDF 文档转换为 XML 文件,最好使用 ITextSharp

javascript - DataTable - 为什么我无法进行单个列搜索(选择输入)?