计数DataTable中列值的出现次数 - Tricky
我需要计算几个不同列的出现次数。例如我的DataTable列是如下,它们只是字符串和日期类型计数DataTable中列值的出现次数 - Tricky
[Case___], [Status],[Summary] ,[Description],
[assigned_group], [Assigned_Individual], [Alert_Status],
[Date_Time_Created], [Date_Time_Resolved] ,
[Date_Time_Closed] ,[Data_Output_Type]
对于每一个**** Assigned_Individual **我需要统计
的时候,这个人有一个数已解决的状态||关闭,
这个人有一个Alert_Status =“SLA警报”和状态<的次数>“已解决”和状态<>“关闭”
的时候,这人有一个数Alert_Status = 'SLA错过' AND Data_Output_Type = '活动门票'
我的目标是返回一个DataTable或列表与记录,如下面
Assigned_Indivual - 已解决 - SLA警报 - SLA错过
鲍勃,5,1,4 玛丽,2,1,3 阿什利,7,0,3
我只是在这一点上寻找方向因为我知道我可能需要使用LINQ,我甚至无法理解这样做的方式。
先谢谢您Stack Oracles!
我能够得到一个人有多少次状态==“已解决”||状态==“关闭”使用下面
var groupedData = from b in dt.AsEnumerable()
where b.Field<string>("Status") == "Resolved" || b.Field<string>("Status") == "Closed"
group b by new
{
Assigned_Individual = b.Field<string>("Assigned_Individual"),
Status = b.Field<string>("Status"),
assigned_group = b.Field<string>("assigned_group")
}
into g
let Counter = g.Count()
select new
{
Assigned_Individual = g.Key.Assigned_Individual,
Status = g.Key.Status,
assigned_group = g.Key.assigned_group,
Count = Counter
};
它返回一个数,如锤,5或玛丽,2 的代码,但我需要知道如何做到这一点,而无需使用WHERE条件,这样我可以算我上面列出的3个条件。
// Make a datatable Result
var dtResult = new DataTable();
dtResult.Columns.Add("Assigned_Indivual");
dtResult.Columns.Add("Resolved");
dtResult.Columns.Add("SLA Alert");
dtResult.Columns.Add("SLA Missed");
// Get All assigneds
var assigneds = dTable.AsEnumerable().Select(a => a.Field<string>("Assigned_Individual")).Distinct();
foreach(var assigned in assigneds)
{
// Get All results os assigned indexed
var resultOfAssigned = dTable.AsEnumerable().Where(a => a.Field<string>("Assigned_Individual") == assigned).ToList();
// Count of results
var resultResolved = resultOfAssigned.Where(a => a.Field<string>("Status") == "Closed").Count();
var resultAlert = resultOfAssigned.Where(a => a.Field<string>("Alert_Status") == "SLA Alert" && a.Field<string>("Status") == "Resolved" && a.Field<string>("Status") == "Closed").Count();
var resultMissed = resultOfAssigned.Where(a => a.Field<string>("Alert_Status") == "SLA Missed" && a.Field<string>("Data_Output_Type") == "Active Tickets").Count();
// Define a data row
var dRow = dtResult.NewRow();
dRow[0] = assigned;
dRow[1] = resultResolved;
dRow[2] = resultAlert;
dRow[3] = resultMissed;
// Insert datarow in Datatable result
dtResult.Rows.Add(dRow);
}
;)
你是怎么做的,我不知道,谢谢!因此,您重新创建数据表和值为每个人distict然后又转换为列表变量,然后它是一个计算的问题。这很好,一整天都卡住了,几分钟之内你就做到了,谢谢 –
列仅出现一次。基于已公布的..你要买哪里的条件,规定'Rows'数量..?这是一个非常简单的事情来处理你想要回报的事情,你也可以告诉我们你自己试过了什么,并期待有人做这项工作/给你答案... – MethodMan
Absolutley,Im able to使用下面的代码获得第一个条件。这将返回状态为“已解决”||的次数“关闭” –
,那么你应该能够完成剩下的..不知道是什么问题... – MethodMan