Мне не понятно, как вы хотите получить данные, здесь просто недостаточно информации для работы.
Вместо этого, вот пример того, как вы можете выбрать все node02
элементы и получить их имена и имена их CustomProperty
. Это выбирает ALL node02
и ALL их CustomProperty
, как и ваш код. Вы на самом деле ничего не фильтруете и не указываете , какие узлы или свойства вам нужны. Это сбивает с толку то, что вы действительно хотите. Итак, вместо этого, вот пример, показывающий, как вы можете делать то, что вы хотите сделать:
XDocument doc = ...;
var batchClasses = doc.Descendants("node02")
.Select(n => new
{
BatchClassName = (string)n.Attribute("name") ?? "",
CustomPropertyNames = n.Descendants("CustomProperty")
.Select(cp => (string)cp.Attribute("Name") ?? "")
.ToList(),
// Here's an example to select "EMAIL" custom property names
EmailPropertyNames = n.Descendants("CustomProperty")
.Select(cp => (string)cp.Attribute("Name") ?? "") // select the names...
.Where(s => s.StartsWith("EMAIL")) // that start with "EMAIL"
.ToList(),
});