using System.Collections.Generic;
public static void Main()
var mylist = new List<string>(){
.Select(s => (Name:s, Culture:GetConfigCulture(s, out string[] tokens), Tokens:tokens))
.GroupBy(x => x.Tokens.First(), StringComparer.InvariantCultureIgnoreCase)
.Select(g => g.OrderBy(x => GetOrder(x.Culture)).First().Name)
string GetConfigCulture(string name, out string[] tokens)
tokens = name.Split('.');
if(tokens.Length < 3) return null;
int GetOrder(string culture)
if(StringComparer.InvariantCultureIgnoreCase.Equals(culture, "fa-ir")) return 0;
if(StringComparer.InvariantCultureIgnoreCase.Equals(culture, null)) return 1;