If you're getting the data you need to interrogate as XML I would say your best bet is to parse the XML in a helper method/class and return a friendlier object or list of objects.
I THINK you would need to know what the Type is at compile time in order to be able to call properties on the results so that you can cast the list of ContentItems to that Type.
Also there is definitely a more efficient way of doing what you're trying to do. I'm not claiming to be a c#/.NET expert, and i'm sure even what I suggest could be improved but it's a start:
WhatsAroundViewModel whatsAroundViewModel = new WhatsAroundViewModel
Items = (from contentItem in _contentManager.Query().ForType(YOUR_DYNAMIC_TYPE_STRING).List()
select new WhatsAroundItem(contentItem.YOUR_XML_DATA_STRING)
return base.Json(whatsAroundViewModel, JsonRequestBehavior.AllowGet);
As a note, i'm not sure how you are getting your xml data from the ContentItem, but you would get that xml data and then you could pass it into the constructor of the "WhatsAroundItem", and then parse the xml inside of the constructor to load the values
I hope this helps and that i'm not WAY off on what you're trying to achieve.