I am not quite sure what you try to do. Do you want to filter out all elements with a certain name and that is descendant of the element(s) named "thedocs"?

Assuming that is what you want to do, then you could do the following:

IEnumerable<XElement> elems = from field in lstFieldsToProcess
from de in doc.Elements("thedocs").Descendants(field.fieldName)
select de;
// Of course this is the same:
IEnumerable<XElement> elems = lstFieldsToProcess
.SelectMany(f => doc.Elements("thedocs").Descendants(f.fieldName));

I am not sure how efficient XDocument is though, so perhaps it is better to take out the fieldnames you want to match first (please test which is the better of the two if performance is important to you):