2016-05-31 12 views
-4

Ich muss die Anzahl der Vorkommen von mehreren verschiedenen Spalten zählen. Zum Beispiel meine Datatable-Spalten als unten, sie sind nur String und DatumstypenCount Anzahl der Vorkommen von Spaltenwerten in DataTable - Tricky

[Case___], [Status],[Summary] ,[Description], 
[assigned_group], [Assigned_Individual], [Alert_Status], 
[Date_Time_Created], [Date_Time_Resolved] , 
[Date_Time_Closed] ,[Data_Output_Type] 

jeder für **** Assigned_Individual ** Ich brauche

Die Anzahl der Male, dass diese Person eine hatte zu zählen Status von Gelöst || Geschlossen,

Die Häufigkeit diese Person hatte einen Alert_Status = 'SLA Alarm' und Status <> 'gelöst' und Status <> 'geschlossen'

Die Anzahl, wie oft diese Person ein hatte Alert_Status = 'SLA Missed' AND Data_Output_Type = 'Aktive Tickets'

Mein Ziel ist es, eine Datentabelle oder Liste mit Datensätzen zurückzukehren, wie unten

Assigned_Indivual - Gelöst - SLA-Alarm - SLA Missed

bob, 5, 1, 4 Mary, 2,1,3 Ashley, 7,0,3

Im gerade an dieser Stelle für die Richtung der Suche Da ich weiß, dass ich wahrscheinlich LINQ verwenden muss, kann ich nicht einmal einen Weg finden, dies zu tun.

Vielen Dank im Voraus Stack Oracles!

Es ist möglich zu ermitteln, wie oft eine Person Status == "Behoben" || hat Status == „Closed“ mit dem Code unten

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 
           }; 

, die eine Zählung wie Bob zurückkehrt, 5 oder Mary, 2 Aber ich muss wissen, wie dies zu tun, ohne einen Zustand, wo mit so dass ich zählen kann meine 3 oben aufgeführten Bedingungen.

+3

die Spalten nur einmal vorkommen .. auf, was Sie gebucht haben .. suchen Sie die Anzahl der 'Rows', wenn diese Bedingungen angegeben werden ..? Dies ist eine ziemlich einfache Sache zu tun, was Sie zurückgeben wollen können Sie uns auch zeigen, was Sie auf eigene Faust versucht haben vs erwarten jemand die Arbeit zu tun/geben Sie die Antwort ... – MethodMan

+0

Absolutley, Im Lage zu Erhalte die erste Bedingung mit dem unten stehenden Code. Dies gibt zurück, wie oft der Status == "Resolved" || ist "Closed" –

+0

dann sollten Sie in der Lage sein, den Rest zu tun .. nicht sicher, was das Problem ist .. – MethodMan

Antwort

1
// 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); 
} 

;)

+0

Wie Sie das getan haben, habe ich keine Ahnung, danke! So erstellen Sie die Datentabelle neu und Werte sind für jede Person distinguiert, die dann wiederum in eine Listenvariable umgewandelt wird, die dann zählt. Das hat super geklappt, ich bin den ganzen Tag festgefahren und du hast das in ein paar Minuten getan, danke –