У меня есть следующий XML-файл:Linq для запроса XML возвращает нуль
<?xml version="1.0" encoding="utf-8"?>
<tmx version="1.4">
<header/>
<body>
<tu>
<tuv lang="en">
<seg>Hello?</seg>
</tuv>
<tuv lang="es">
<seg>¿Diga?</seg>
</tuv>
</tu>
</body>
</tmx>
И я пытаюсь использовать этот код, чтобы извлечь содержимое первого <seg>
тега:
root.Elements("tuv")
.Where(e => e.Attribute("lang").Value.Equals("en"))
.Select(e => e.Elements("seg"))
.SingleOrDefault()
.Where(d => d.Value.Equals(originalText))
.SingleOrDefault()
.Value;
originaltext
равно «Привет?» в этом случае. Однако полученный результат равен нулю. Я предполагаю, что мой запрос linq неверен. Может ли кто-нибудь дать мне подсказку о том, как правильно писать этот запрос? Большое спасибо!
Поскольку 'root' не имеет Элемент «Тув». –
Действительно - вы можете использовать 'Descendants'. Вы также можете упростить свой код с помощью '==' вместо вызова 'Equals', например. 'e.Attribute (" lang "). Значение ==" en "'. Я также * настоятельно рекомендую использовать один оператор LINQ (т. Е. Вызов метода) для каждой строки - выложите свой код вертикально, и его будет намного легче читать. Затем «SingleOrDefault» возвращает одно значение ... после этого вы не хотите использовать 'Where'. –
Спасибо за ваши комментарии! – Arturo