using System.Collections.Generic;
private static IList<Error> errors;
public static void Main()
for (int index = 0; index < errors.Count; index++) {
Error error = errors[index];
if (error == null || error.Occurrences.Count == 0) {
Console.WriteLine("Error number " + (index + 1));
foreach (var occurrence in error.Occurrences) {
foreach (var time in occurrence.Times.Values) {
Console.WriteLine(time.Version);
private static void Filter(string filterVersion)
for (int index = 0; index < errors.Count; index++)
Error error = errors[index];
foreach (var occurrence in error.Occurrences)
var toRemove = occurrence.Times.Keys.Where(key => occurrence.Times[key].Version != filterVersion).ToList();
foreach (var key in toRemove)
occurrence.Times.Remove(key);
if (occurrence.Times.Count == 0)
public static void SeedErrors()
errors = new List<Error>();
var error1 = new Error() {
Occurrences = new List<ErrorOccurrenceDetails>() {
new ErrorOccurrenceDetails() {
Times = new Dictionary<DateTime, ErrorTime>() {
{ DateTime.Now, new ErrorTime(){ Version = "1.0" }},
{ DateTime.Now.AddDays(1), new ErrorTime(){ Version = "1.0" }},
{ DateTime.Now.AddDays(2), new ErrorTime(){ Version = "1.0" }},
{ DateTime.Now.AddDays(3), new ErrorTime(){ Version = "1.1" }},
{ DateTime.Now.AddDays(4), new ErrorTime(){ Version = "1.1" }},
{ DateTime.Now.AddDays(5), new ErrorTime(){ Version = "1.0" }},
{ DateTime.Now.AddDays(6), new ErrorTime(){ Version = "1.1" }},
var error2 = new Error() {
Occurrences = new List<ErrorOccurrenceDetails>() {
new ErrorOccurrenceDetails() {
Times = new Dictionary<DateTime, ErrorTime>() {
{ DateTime.Now, new ErrorTime(){ Version = "1.1" }},
{ DateTime.Now.AddDays(2), new ErrorTime(){ Version = "1.1" }},
{ DateTime.Now.AddDays(3), new ErrorTime(){ Version = "1.0" }},
{ DateTime.Now.AddDays(4), new ErrorTime(){ Version = "1.1" }},
{ DateTime.Now.AddDays(5), new ErrorTime(){ Version = "1.1" }},
{ DateTime.Now.AddDays(6), new ErrorTime(){ Version = "1.1" }},
{ DateTime.Now.AddDays(7), new ErrorTime(){ Version = "1.0" }},
var error3 = new Error() {
Occurrences = new List<ErrorOccurrenceDetails>() {
new ErrorOccurrenceDetails() {
Times = new Dictionary<DateTime, ErrorTime>() {
{ DateTime.Now, new ErrorTime(){ Version = "1.1" }},
{ DateTime.Now.AddDays(2), new ErrorTime(){ Version = "1.1" }},
{ DateTime.Now.AddDays(3), new ErrorTime(){ Version = "1.1" }},
{ DateTime.Now.AddDays(4), new ErrorTime(){ Version = "1.1" }},
{ DateTime.Now.AddDays(5), new ErrorTime(){ Version = "1.1" }},
{ DateTime.Now.AddDays(6), new ErrorTime(){ Version = "1.1" }},
{ DateTime.Now.AddDays(7), new ErrorTime(){ Version = "1.1" }},
public List<ErrorOccurrenceDetails> Occurrences { get; set; }
public class ErrorOccurrenceDetails
public Dictionary<DateTime, ErrorTime> Times { get; set; }
public string Version { get; set; }