Si potrebbe analizzare l'elenco e assegnare un tasto contigua ad esempio, definire una classe:
public class TimeStatus
{
public int ContiguousKey { get; set; }
public string Time { get; set; }
public string Status { get; set; }
}
Si potrebbe assegnare valori alla chiave contigua dal scorrendo, mantenendo un conteggio e rilevando quando lo stato cambia da On a Off e così via che ti darebbe una lista come questa:
List<TimeStatus> timeStatuses = new List<TimeStatus>
{
new TimeStatus { ContiguousKey = 1, Status = "On", Time = "10:00"},
new TimeStatus { ContiguousKey = 1, Status = "On", Time = "11:00"},
new TimeStatus { ContiguousKey = 2, Status = "Off", Time = "12:00"},
new TimeStatus { ContiguousKey = 2, Status = "Off", Time = "13:00"},
new TimeStatus { ContiguousKey = 2, Status = "Off", Time = "14:00"},
new TimeStatus { ContiguousKey = 3, Status = "On", Time = "15:00"},
new TimeStatus { ContiguousKey = 3, Status = "On", Time = "16:00"}
};
quindi utilizzando la seguente query è possibile estrarre lo stato e raggruppati tempi:
var query = timeStatuses.GroupBy(t => t.ContiguousKey)
.Select(g => new { Status = g.First().Status, Times = g });
Penso che questo sia un possibile duplicato: http: // StackOverflow.it/questions/7469828/linq-query-to-split-an-ordered-list-in-sublists-of-contiguous-points-by-some-c – hcb
È la domanda, dati i seguenti dati che posso determinare se il l'entità è inserita/disinserita in un dato momento? –