.NET Fiddle

CSharp · Console

/Program.cs

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; }
}
;