using System.Collections.Generic;
public static void Main()
var dataFromDynamo = JsonConvert.DeserializeObject<ICollection<DynamoDBLogStructure>>(_fromDynamo);
Console.WriteLine(string.Format("Dummy data from DynamoDB: {0} records in total.", dataFromDynamo.Count()));
Console.WriteLine(string.Format("Dummy data from DynamoDB: {0} records in total for [gob]", dataFromDynamo.Where(x => x.LogType.ToLower() == "gob").Count()));
Console.WriteLine(string.Format("Dummy data from DynamoDB: {0} records in total for [comres]", dataFromDynamo.Where(x => x.LogType.ToLower() == "comres").Count()));
var candidateList = new List<Candidate>
new Candidate("Jennifer González", "gonzalez"),
new Candidate("Héctor Ferrer", "ferrer"),
new Candidate("Hugo Rodríguez", "rodriguez"),
new Candidate("Mariana Nogales", "nogales")
var comRes = dataFromDynamo.Where(x => x.LogType.ToLower() == "comres");
foreach(var c in candidateList)
Console.WriteLine(string.Format("Total votes for {0}: {1}", c.FullName, comRes.Sum(x => x.Data[c.ObjKey])));
Console.WriteLine(string.Format("Colegios escrutados: {0}%", comRes.Average(x => x.Data["porciento colegios escrutados"])));
Console.WriteLine(string.Format("Última actualización: {0}", comRes.Last().CreationTime));
public string FullName { get; set; }
public string ObjKey { get; set; }
public Candidate(string fullName, string objKey)
public class DynamoDBLogStructure
public string Id { get; set; }
[JsonProperty("logData")]
public dynamic Data { get; set; }
[JsonProperty("logDateTime")]
public DateTime CreationTime { get; set; }
[JsonProperty("logType")]
public string LogType { get; set; }
[JsonProperty("logUserName")]
public string Username { get; set; }
private static string _fromDynamo = "[{\"logId\":\"1111-1111\",\"logData\":{\"rosello\": 1006,\"bernier\": 1004,\"lugaro\": 1002,\"cidre\": 1008,\"porciento colegios escrutados\": 37,\"updated\":\"2016-10-12T17:33:33.2546122-04:00\"},\"logDateTime\":\"2016-10-12T06:02:02\",\"logType\":\"gob\",\"logUserName\":\"pepe.ortiz@gfrmedia.com\"},"
+ "{\"logId\":\"1111-1111\",\"logData\":{\"rodriguez\": 1006,\"gonzalez\": 1004,\"ferrer\": 1004,\"nogales\": 1008,\"porciento colegios escrutados\": 37,\"updated\":\"2016-10-12T17:33:33.2546122-04:00\"},\"logDateTime\":\"2016-10-12T06:02:02\",\"logType\":\"comres\",\"logUserName\":\"pepe.ortiz@gfrmedia.com\"},"
+ "{\"logId\":\"1111-1111\",\"logData\":{\"rodriguez\": 1006,\"gonzalez\": 1004,\"ferrer\": 1002,\"nogales\": 1008,\"porciento colegios escrutados\": 37,\"updated\":\"2016-10-12T17:33:33.2546122-04:00\"},\"logDateTime\":\"2016-10-12T06:02:02\",\"logType\":\"comres\",\"logUserName\":\"pepe.ortiz@gfrmedia.com\"}]";