Из вашего объяснения звучит так, как будто вы хотите получить значение, если оно найдено, и если не найдено, использовать английский перевод. Учтите следующее:
locale = "ja-jp";
var itens = from c in db.Contents.Include("Translation")
where c.RegionalInfo.Any(x => x.RegionId == locale) ||
c.RegionalInfo.Any(x => x.RegionId == "en")
order by (c.RegionalInfo.RegionId == "en", "zzzz", c.RegionalInfo.RegionId)
select c;
var foundItem = items.FirstOrDefault();
if (foundItem != null)
{ ... }
Это находит reocrds, которые соответствуют вашей локали и английской, а затем сортирует результаты по regionId, помещая найденный английский элемент в конец списка, а затем берет первую запись (если найдена). Примечание: я не тестировал эту реализацию, поэтому обязательно проверьте параметр orderby, чтобы убедиться, что он работает как задумано.