using System.Collections.Generic;
private static readonly Dictionary<string, string> _ipAddressesDictionary = new Dictionary<string, string>()
{"ip.qwer4.abc5.somename", "6x.x.00.xx"},
{"ip.qwer4.abc5.somename.co", "5x.x.00.xx"},
{"ip.qwer3.abc1.somename", "4x.3.xx.xx"},
{"ip.qwer3.abc1.somename.com.mx", "3x.x.00.xx"},
{"ip.qwer5.abc1.somename.com.br", "2x.x.00.xx"},
{"ip.qwer6.abc1.somename.co.uk", "1x.x.00.xx"},
public static void Main()
Console.WriteLine("--first");
Console.WriteLine(LookupByPrefix("abc1.somename.co.uk"));
Console.WriteLine("--many abc1.somename.com");
string[] many = LookupByPrefixMany("abc1.somename.com");
foreach(string ip in many)
Console.WriteLine("--many abc1");
many = LookupByPrefixMany("abc1.euroname.co.uk");
foreach(string ip in many)
public static string LookupByPrefix(string domainName)
string[] dotDomains = domainName.Split('.');
for(int matchCount = dotDomains.Length; matchCount > 0; matchCount--)
string[] ret = LookUpPeerIpMany(string.Join(".", dotDomains.Take(matchCount)));
if(ret != null && ret.Length > 0) return ret.SingleOrDefault();
public static string[] LookupByPrefixMany(string domainName)
string[] dotDomains = domainName.Split('.');
for(int matchCount = dotDomains.Length; matchCount > 0; matchCount--)
string[] ret = LookUpPeerIpMany(string.Join(".", dotDomains.Take(matchCount)));
if(ret != null && ret.Length > 0) return ret;
public static string[] LookUpPeerIpMany(string deviceName)
return _ipAddressesDictionary
.Where(q=>q.Key.Contains(deviceName)).Select(q=>q.Value).ToArray();