У меня есть список XML-элементов, хранящихся в классе:Получение конкретных элементов из XDocument на основе списка
public class clsField
{
public string fieldName { get; set; }
}
Тогда я загрузке файла XML:
XDocument doc = XDocument.Load(fileName);
Наконец, я хочу для получения только полей, определенных в указанном выше классе, в объект IEnumerable. Это то, что у меня есть до сих пор:
List<clsField> lstFieldsToProcess;
IEnumerable<XElement> allthedocs = from thedoc
in doc.Descendants("thedocs")
select
(
from fields
in lstFieldsToProcess
select XElement.Parse(fields.fieldName)
);
Но я получаю сообщение об ошибке по вышеуказанному коду. Любая помощь будет оценена по достоинству. Спасибо за руку.
Update # 1
Псевдо код:
var fieldNames = new HashSet<string>(lstFieldsToProcess.Select(c => c.fieldName));
IEnumerable<XElement> elems = from level1 in doc.Elements("thedocs")
let level2 = level1.Descendants()
where fieldNames.Contains(level2.Name.LocalName)
select level1;
'получение ошибки на вышеуказанный код' как насчет обмена с нами? –
Является ли 'clsField' объектом, который сериализуется в документе' fileName'? Или у вас есть произвольный объект, сериализованный, и вы хотите получить имена свойств * другого * класса (в этом случае class 'clsField') и получать только поля из XML-документа, которые соответствуют именам свойств, найденным в' clsField '? – Quantic
Последнее верно. clsField - это отдельный класс, который содержит имя свойства полей, которые я хотел бы получить из «Документа XDocument». Благодарю. –