public void AdicionarRegistro(string DataEvento, string CodigoEvento, string CodigoUsuario) { UInt16 ano = UInt16.Parse(DataEvento.Substring(0, 4)); /* Para representar o ano utilizamos 16 bits 0 - 65535 */ byte mes = byte.Parse(DataEvento.Substring(4, 2)); /* Para o mês utilizamos 8bits 0 - 255 */ byte dia = byte.Parse(DataEvento.Substring(6, 2)); /* O mesmo para o dia */ byte hora = byte.Parse(DataEvento.Substring(8, 2)); /*O mesmo para hora */ byte minuto = byte.Parse(DataEvento.Substring(10, 2)); /* O mesmo para minuto */ byte segundos = byte.Parse(DataEvento.Substring(12, 2)); /* O mesmo para segundo */ UInt16 milissegundos = UInt16.Parse(DataEvento.Substring(14, 3)); /* Milissegundos vai de 0 - 999, portanto 16bits */ long codEvento = Int64.Parse(CodigoEvento, System.Globalization.NumberStyles.HexNumber); /* Codigo do evento * representando em valor numero, utilizando apenas 32 bits, com string seria necessario 64bits */ DateTime data = new DateTime(ano, mes, dia, hora, minuto, segundos, milissegundos); Registro registro = new Registro(data.Ticks, ulong.Parse(CodigoUsuario)); // Cria um registro // Indexação DateTime DateDictionary = new DateTime(ano, mes, dia, hora, 0, 0); Dictionary <long, List <Registro> > DicRegistros; /* Datetime.Ticks = representação numerica da data */ if (Objetos.TryGetValue(DateDictionary.Ticks, out DicRegistros)) // Verifica se aquela data ja foi indexada { // Caso afirmativo referencia ela com DicRegistros List <Registro> ListRegistros; if (DicRegistros.TryGetValue(codEvento, out ListRegistros)) // Verifica se um evento ja foi indexado { // Caso afirmativa referencia com ListRegistro ListRegistros.Add(registro); // Adiciona o registro } else { ListRegistros = new List <Registro>(); ListRegistros.Add(registro); DicRegistros.TryAdd(codEvento, ListRegistros); // Caso o evento não tenha sido indexado, ele é indexado e adicionado o registro } } else // Se a data não foi indexada, ela é feita, bem como o evento a ser lido e posteriormente adicionado o registro { var ListRegistros = new List <Registro>(); ListRegistros.Add(registro); var DicEventos = new Dictionary <long, List <Registro> >(); DicEventos.Add(codEvento, ListRegistros); Objetos.Add(DateDictionary.Ticks, DicEventos); } }