2016-05-31 8 views
-4

複数の異なる列の出現回数を数える必要があります。私のDataTableの列は以下の通りですたとえば、彼らは単なる文字列、日付の種類ごとに、Count DataTable - トリッキーでの列値の出現回数

[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アラート」ANDステータス<した回数は>「解決」ANDステータス<は>「クローズ」、休館

この人はを持っていた回数Alert_Status = 'SLAは逃した' AND Data_Output_Type = 'アクティブチケット'

私の目標は、以下のようにレコードを持つのDataTableまたはListを返すことです

Assigned_Indivual - 解決 - SLAアラート - SLAが不在

ボブ、5、1、4 メアリー、2,1,3 アシュリー、7,0,3

イムはちょうどこの時点で方向を探して

私が知っているように、私はおそらくLINQを使う必要があります。私はこれを行う方法を理解することすらできません。

ありがとうございましたStack Oracles!

人がいる回数を取得できます。ステータス== "解決済み" ||ステータス==「クローズド」なボブ、5 ORメアリー、2 として数を返し

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

以下のコードを使用して、しかし、私は数えることができるように私は、WHERE条件を使用せずにこれを行う方法を知っておく必要があります私の上記の3つの条件。

+3

列が..あなたが投稿した内容に基づいて1回だけでは..あなたはそれらの条件が記載されている 'Rows'の数を探していますか..?これはあなたが戻ってほしいと思っていることに関して非常に単純なことです。あなたが自分の試みで何を試しているのかを誰かに見せてもらうことができますか?答えを教えてください.../ – MethodMan

+0

Absolutley、Im able to以下のコードを使用して最初の条件を取得します。ステータスが== "解決済み"の回数を返します。 "閉じた" –

+0

あなたは残りのことをすることができるはずです..何が問題なのかわからない。 – MethodMan

答えて

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

どうやって、ありがとう!だからあなたはデータテーブルを作り直し、値はそれぞれの人に分かれていて、それが次にリスト変数に変換され、それから数えられます。これは一日中止まってしまいました。あなたは数分でこれをやってくれてありがとう –

関連する問題