私は3行を表示する必要があるグラフを用意する必要があります。 1つは新しい問題を1週間表示し、2つは閉じた問題を1週間、3つは開いた問題を1週間表示します。このため、私はクエリを用意して2つの別々のリストを作成することができました.1つのリストは毎週の新しい問題の数を維持し、2つ目のリストは毎週の閉じた問題の数を維持します。私は特定の週のためのオープンな問題の合計数のために得る上記のデータから、2リスト間の値の比較と共通要素の値の減算 - C#
[0]: { Week = {6/14/2015 12:00:00 AM}, Count = 1 }
[1]: { Week = {3/5/2017 12:00:00 AM}, Count = 1 }
[2]: { Week = {5/21/2017 12:00:00 AM}, Count = 4 }
[3]: { Week = {6/4/2017 12:00:00 AM}, Count = 7 }
[4]: { Week = {6/11/2017 12:00:00 AM}, Count = 4 }
[5]: { Week = {6/25/2017 12:00:00 AM}, Count = 7 }
[6]: { Week = {7/9/2017 12:00:00 AM}, Count = 3 }
:
は、ここでサンプル最初のリストのためのデータ(新たな問題を維持するもの)です。
注:これらの両方のリストでは、週の値には日曜日の日付が入ります。チャートにデータを表示している間、月曜日から始まる週が必要です。第二のリスト(閉じた状態の問題を維持するもの)のためのサンプルデータのための同様
:
[0]: { Week = {12/13/2015 12:00:00 AM}, Count = 1 }
[1]: { Week = {7/9/2017 12:00:00 AM}, Count = 3 }
[2]: { Week = {6/18/2017 12:00:00 AM}, Count = 2 }
[3]: { Week = {7/23/2017 12:00:00 AM}, Count = 8 }
[4]: { Week = {10/1/2017 12:00:00 AM}, Count = 6 }
[5]: { Week = {8/6/2017 12:00:00 AM}, Count = 3 }
[6]: { Week = {9/17/2017 12:00:00 AM}, Count = 5 }
私は特定の週のために閉じられた問題の総数のために得る上記のデータから。ここで
は、これらのリストのためのコードです:
今var openIssuesList = getDetails.Where(x => x.ChangedTo == "Open").Select(x => new { Week = x.Date.AddDays(x.Date.DayOfWeek == DayOfWeek.Sunday ? 0 : 7 - (int)x.Date.DayOfWeek).Date, Detail = x }).GroupBy(x => x.Week).Select(x => new { Week = x.Key, Count = x.Count() }).ToList();
var closedIssuesList = getDetails.Where(x => x.ChangedTo == "Closed").Select(x => new { Week = x.Date.AddDays(x.Date.DayOfWeek == DayOfWeek.Sunday ? 0 : 7 - (int)x.Date.DayOfWeek).Date, Detail = x }).GroupBy(x => x.Week).Select(x => new { Week = x.Key, Count = x.Count() }).ToList();
まま最後のピースは、一週間の総未解決の問題のためのデータが含まれている必要があり、これらの2つのリストの値を使用して、新しいリストを作成することです。
説明:
- 私は上記の2つのリストから週の値を比較する必要があります。
- 週の値が等しい場合は、 と、両方のリストの特定の週のCount値の差を計算します。
- この新しいリストに週の値とカウントの値(差を計算した後)を保存します。
- 週の値が一致しない場合は、そのような値(Weekと Countの両方)を選択し、そのままこの新しいリストに保存します。上記のサンプルデータから、だから、
は、ここに新しいリストが好きでなければならない方法は次のとおりです。
[0]: { Week = {6/14/2015 12:00:00 AM}, Count = 1 } // As is value from first list - openIssuesList
[1]: { Week = {12/13/2015 12:00:00 AM}, Count = 1 } // As is value from second list - closedIssuesList
[2]: { Week = {3/5/2017 12:00:00 AM}, Count = 1 } // As is value from first list - openIssuesList
[3]: { Week = {5/21/2017 12:00:00 AM}, Count = 4 } // As is value from first list - openIssuesList
[4]: { Week = {6/4/2017 12:00:00 AM}, Count = 7 } // As is value from first list - openIssuesList
[5]: { Week = {6/11/2017 12:00:00 AM}, Count = 4 } // As is value from first list - openIssuesList
[6]: { Week = {6/18/2017 12:00:00 AM}, Count = 2 } // As is value from second list - closedIssuesList
[7]: { Week = {6/25/2017 12:00:00 AM}, Count = 7 } // As is value from first list - openIssuesList
[8]: { Week = {7/9/2017 12:00:00 AM}, Count = 0 } // These is common week from both lists. Hence we calculate the difference between count values. So 3-3 = 0.
[9]: { Week = {7/23/2017 12:00:00 AM}, Count = 8 } // As is value from second list - closedIssuesList
[10]: { Week = {8/6/2017 12:00:00 AM}, Count = 3 } // As is value from second list - closedIssuesList
[11]: { Week = {9/17/2017 12:00:00 AM}, Count = 5 } // As is value from second list - closedIssuesList
[12]: { Week = {10/1/2017 12:00:00 AM}, Count = 6 } // As is value from second list - closedIssuesList
上記のデータから、親切に、このリストの8番目の要素を参照してください。このリストの週7/9/2017は、openIssuesList(第6要素)とclosedIssuesList(第2要素)の両方から共通していました。
このリストを達成するためのコードは何ですか?
注:これらのリストのすべてのDateTime値から自分のコードのTime要素の値を削除しました。したがって、これらのリストには、すべての日付の値が12:00:00 AMで表示されます。
あなたも私の他の同様の質問ではなく、別の最終結果の要件で見ることができますか?リンク:https://stackoverflow.com/questions/47111604/comparing-values-in-historic-manner-between-2-lists-and-increment-the-values-if –
これを選ぶことは正解と同じですより速い@Mike Matの答え –