Начну с этого (очень урезанная версия всего XML-файла)
Код: Выделить всё
NeverSeen
10
AlsoNeverSeen
20
Код: Выделить всё
'NeverSeen' 10
'AlsoNeverSeen' 20
Я бы Мне бы хотелось помочь мне найти правильный путь для решения этой конкретной проблемы, но также есть ли у кого-нибудь предложения по достойному, нетривиальному руководству по LINQ для XML.
Я должен сказать, что я исходящий из базы данных; 30 секунд в SQL - 5 дней для XML и LINQ.
Я также путаюсь в разных подходах - и, вероятно, случайно смешиваю их
например, те, которые используют "from"
Код: Выделить всё
var schema3 = from el in XDoc.Elements("MetadataDomain")
where (String)el.Attribute("DomainUUID") == pDomainUUID
select (el);
Или те, которые не используют «from», но используют « .'
Код: Выделить всё
var schema4 = XDoc.Elements("MetadataDomain")
.Where(sch => (String)sch.Attribute("DomainUUID") == pDomainUUID)
.Select(sch => (String)sch.Element("SchemaName").Value);
Я был в восторге от XPath, например
Код: Выделить всё
string schema5 = root.XPathSelectElement($"MetadataSets/MetadataDomain[@DomainUUID='{pDomainUUID}']").Element("SchemaName").Value;
И как мне выбрать 2 «поля», например, некоторые говорят, что для выбора 2 «полей» используются анонимные типы, например
Код: Выделить всё
select new { car.Make, car.VIN}
when I try that with XML
where (String)el.Attribute("MetadataSetID") == pMetadataSetID
select new { el.Element("TagName").Value, el.Element("ItemSeq").Value } ;
Ошибка CS0833: анонимный тип не может иметь несколько свойств с одинаковым именем
Похоже, компилятор не может отличить их друг от друга, и я не знаю, как их назвать.
Спасибо
Джей Си
Подробнее здесь: https://stackoverflow.com/questions/787 ... s-from-xml