Анонимный тип на самом деле не помогает, так как вам нужна только последовательность строк , а не какой-либо кортеж.Попробуйте:
XDocument doc = XDocument.Parse(xmlFile);
var query = from c in doc.Root.Elements("a").Elements("b")
select c.Element("val").Value;
var IDs = query.ToList();
Лично я бы просто использовал метод-синтаксис полностью:
var IDs = doc.Root.Elements("a")
.Elements("b")
.Select(c => c.Element("val").Value)
.ToList();