using System.Collections.Generic;
public string HostName { get; set; }
public DateTime dt { get; set; }
static List<Host> GetServiceHosts(int days)
var list = new List<Host>() {
new Host { HostName = "ServiceHostNameTest", dt = DateTime.Now.AddDays(-1 * days) },
new Host { HostName = "ServiceHostNameTest", dt = DateTime.Now.AddDays(-1 * days - 1) },
new Host { HostName = "servicehostNametest2", dt = DateTime.Now.AddDays(-1 * days) },
new Host { HostName = "ServiceHostNameTest2", dt = DateTime.Now.AddDays(-1 * days - 1) },
new Host { HostName = "BYAPHY101220913", dt = DateTime.Now.AddDays(-1 * days) },
new Host { HostName = "BYAPHY101220913", dt = DateTime.Now.AddDays(-1 * days - 1) },
new Host { HostName = "BYAPHY101220913", dt = DateTime.Now.AddDays(-1 * days - 1) }
public static void Main(string[] args)
var array = new[] { 1, 4, 8 };
var result = array.SelectMany(item => GetServiceHosts(item))
.GroupBy(host => host.HostName, StringComparer.OrdinalIgnoreCase)
.Select(hostGroup => hostGroup.OrderByDescending(host => host.dt).FirstOrDefault());
Console.WriteLine(string.Join(", ", result.Select(x => string.Concat(x.HostName, "-", x.dt.ToString()))));