using System.Collections.Generic;
public static void Main()
var devices = DataGenerator.Generate();
var device5 = devices.FirstOrDefault(d => d.Name == "Device5");
foreach (var telemetry in device5.Telemetries)
Console.WriteLine(string.Format("Sensor:{0}, Value:{1}, Timestamp:{2}", telemetry.Sensor, telemetry.Value, telemetry.Timestamp));
var maxTelemetry = devices.SelectMany(d => d.Telemetries).OrderByDescending(t => t.Timestamp).FirstOrDefault();
Console.WriteLine(string.Format("Sensor:{0}, Value:{1}, Timestamp:{2}", maxTelemetry.Sensor, maxTelemetry.Value, maxTelemetry.Timestamp));
public class DataGenerator
public static List<Device> Generate()
var dummyDevices = new List<Device>();
dummyDevices.Add(new Device() { Id = 1, Name = "Device1", Telemetries = GenerateData("Temp", 10) });
dummyDevices.Add(new Device() { Id = 2, Name = "Device2", Telemetries = GenerateData("Temp", 20) });
dummyDevices.Add(new Device() { Id = 3, Name = "Device3", Telemetries = GenerateData("Temp", 15) });
dummyDevices.Add(new Device() { Id = 4, Name = "Device4", Telemetries = GenerateData("Temp", 5) });
dummyDevices.Add(new Device() { Id = 5, Name = "Device5", Telemetries = GenerateData("Temp", 25) });
private static List<Telemetry> GenerateData(string sensor, int count)
var dummyData = new List<Telemetry>();
for (int i = 0; i < count; i++)
dummyData.Add(new Telemetry() { Id = i, Sensor = sensor, Value = new decimal(new Random().NextDouble()), Timestamp = DateTime.Now.AddSeconds(i) });
public int Id { get; set; }
public string Name { get; set; }
public List<Telemetry> Telemetries { get; set; }
public int Id { get; set; }
public string Sensor { get; set; }
public decimal Value { get; set; }
public DateTime Timestamp { get; set; }