using System.Collections.Generic;
public static void Main()
List<RoutingData> savedMessages = new List<RoutingData>();
List<RoutingData> incomingMessages = new List<RoutingData>();
savedMessages.Add(new RoutingData(null, DateTime.Now, null, 1, 1, 1));
savedMessages.Add(new RoutingData(DateTime.Now, DateTime.Now, null, 1, 1, 2));
savedMessages.Add(new RoutingData(DateTime.Now, DateTime.Now, null, 1, 1, 3));
incomingMessages.Add(new RoutingData(DateTime.Now, DateTime.Now, null, 1, 1, 1));
incomingMessages.Add(new RoutingData(null, DateTime.Now, null, 1, 1, 2));
incomingMessages.Add(new RoutingData(null, DateTime.Now, null, 1, 1, 3));
incomingMessages.Add(new RoutingData(DateTime.Now, DateTime.Now, null, 1, 1, 4));
incomingMessages.Add(new RoutingData(DateTime.Now, DateTime.Now, null, 1, 1, 5));
List<RoutingData> updatedMessages = new List<RoutingData>();
updatedMessages.Concat(incomingMessages.Where(incomingMessage => !savedMessages.Any(savedMessage => (incomingMessage.Reference == savedMessage.Reference))));
savedMessages.ForEach(savedMessage => {
incomingMessages.Where(incoming => incoming.Reference == savedMessage.Reference).ToList().ForEach((incomingMessage) => {
if (savedMessage.FirstReceived == null && incomingMessage.FirstReceived != null) {
Console.WriteLine("FirstReceived is null from: " + savedMessage.Reference);
savedMessage.FirstReceived = incomingMessage.FirstReceived;
updatedMessages.Add(incomingMessage);
Console.WriteLine("FirstReceived is not null from: " + savedMessage.Reference);
updatedMessages.Add(savedMessage);
updatedMessages.ForEach(message => {Console.WriteLine(message.FirstReceived.ToString());});
Console.WriteLine(updatedMessages.Count);
public class RoutingData {
public DateTime? FirstReceived { get; set; }
public DateTime? ProcessedInternally { get; set; }
public DateTime? SentToOperator { get; set; }
public int RouteID { get; set; }
public int SmscAccountID { get; set; }
public int? Reference { get; set; }
public int StatusCode { get; set; }
public RoutingData(DateTime? firstReceived, DateTime? processedInternally, DateTime? sentToOperator, int smslRoute, int smscAccountId, int reference)
FirstReceived = firstReceived;
ProcessedInternally = processedInternally;
SentToOperator = sentToOperator;
SmscAccountID = smscAccountId;