using System.Collections.Generic;
public static void Main()
Console.WriteLine("Hello World");
var data = new List<Item>
new Item { ID = 1, State = "new", Start = new DateTime(2023,10,18, 10, 17, 0) },
new Item { ID = 2, State = "active", Start = new DateTime(2023,10,18, 10, 19, 0) },
new Item { ID = 3, State = "active", Start = new DateTime(2023,10,18, 10, 19, 44) },
new Item { ID = 4, State = "complete", Start = new DateTime(2023,10,18, 10, 23, 44) },
new Item { ID = 5, State = "complete", Start = new DateTime(2023,10,18, 10, 24, 44) },
new Item { ID = 6, State = "complete", Start = new DateTime(2023,10,18, 10, 25, 54) },
new Item { ID = 7, State = "active", Start = new DateTime(2023,10,18, 10, 44, 54) },
var result = new List<Item>();
for(int i = 0; i < data.Count; i++)
for(int j = i+1; j < data.Count; j++)
if(data[i].State != data[j].State)
result.Add(new Item { State = data[i].State, Start = data[i].Start, End = data[j].Start });
result.Add(new Item { State = data[i].State, Start = data[i].Start, End = DateTime.Now });
Console.WriteLine(string.Join("\n", result.Select(x => x.State + " " + x.Start + " " + x.End)));
public string State {get;set;}
public DateTime Start {get;set;}
public DateTime End {get;set;}