Вы запрашиваете Элемент как объект, а не его значение.Ваш код должен быть:
var contacts = (from c in loaded.Descendants("Countries")
select new
{
Country = c.Element("Country").Value,
Region = c.Element("region").Value,
Province= c.Element("province").Value,
City = c.Element("city").Value,
Hotel = c.Element("hotel").Value
}).ToList();
Но я не уверен, что это также даст какие-либо результаты, если я посмотрю на ваш XML.Я предполагаю, что это должно дать вам результаты, которые вы хотите:
var contacts = (from c in loaded.Descendants("Countries")
select new
{
Country = c.Attribute("country").Value,
Region = c.Descendants("Regions").FirstOrDefault().Attribute("region")Value,
Province= c.Descendants("Provinces").FirstOrDefault().Attribute("province").Value,
City = c.Descendants("Cities").FirstOrDefault().Attribute("city").Value,
Hotel = c.Descendants("Hotels").FirstOrDefault().Attribute("hotel").Value
}).ToList();
Обратите внимание, что этот код довольно хрупкий, потому что, если один из вспомогательных элементов отсутствует, возникает исключение.Вы должны немного подстроиться, чтобы получить желаемые результаты.