Хотя я пометил другой ответ как «ответ», я на самом деле решил эту проблему другим способом. Несмотря на это, я ничего не получу за то, что принял свой собственный ответ, а JS совершенно оправдан и был полезен. Таким образом, как единственный ответчик, кроме меня, слава идет к нему. Для справки мое собственное решение включено сюда.
То, на чем я остановился, было:
var xmlcampaigns = from c in xd.Descendants("PrimaryCategory")
where (int)c.Element("PrimaryCategoryID") == 3
select new {campaignName = c.Elements("CategoryList").Elements("CategoryName").ToList(),
campaignURL = c.Elements("CategoryList").Elements("CategoryURL").ToList()};
Затем я извлек результаты в два объекта List и перебрал их.