CSharp · Console
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
var countryOrder =new List<string> { "UK", "KE", "AU", "USA"};
var data = new List<ExampleDataClass> {
new ExampleDataClass {
Name = "Alice",
Country = "UK",
Age = 30,
},
new ExampleDataClass {
Name = "Bob",
Country = "KE",
Age = 20,
},
new ExampleDataClass {
Name = "Charlie",
Country = "UK",
Age = 30,
},
new ExampleDataClass {
Name = "Alice",
Country = "KE",
Age = 40,
},
new ExampleDataClass {
Name = "Bob",
Country = "AU",
Age = 50,
},
new ExampleDataClass {
Name = "David",
Country = "USA",
Age = 25,
}
};
var reducedData = data.GroupBy(x => x.Name)
.Select(g => g.OrderBy(item => countryOrder.IndexOf(item.Country)).First())
.ToList();
foreach (ExampleDataClass item in reducedData)
{
Console.WriteLine(string.Format("Name: \"{0}\", Country: \"{1}\", Age: {2}", item.Name, item.Country, item.Age));
}
}
}
class ExampleDataClass
{
public string Name { get; set; }
public string Country { get; set; }
public int Age { get; set; }
}