我有一个如下所示的数据表
我的结果应该是 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/