Я выдвигаю меня за деревенского идиота.
Почему это не работает:
foreach (XElement clientField in _clientXml.Descendants("row").Descendants())
{
var newFieldName =
from sourceField in _sourceEntries.Descendants("Field")
where (string)sourceField.Attribute("n") == (string)clientField.Attribute("n")
select new
{
FieldName = ((string) sourceField.Attribute("n")),
AcordRef = ((string) sourceField.Attribute("m"))
};
foreach (var element in newFieldName)
{
Console.WriteLine("Field Name: {0}",
element.FieldName, element.AcordRef);
}
}
Мои исходные XML-файлы загружаются с помощью XElement.Load (myFileName).В отладке clientField имеет атрибут n = "Номер политики".Первый элемент _sourceEntries.Descendants («Поле») также имеет атрибут n = «Номер политики».Действительно, каждый элемент в _clientXml.Descendants ("row"). Descendants () имеет соответствующую строку в _sourceEntries.Descendants ("Field").И я достаточно знаю, чтобы знать, что выбор ленив, поэтому в отладке я смотрю на блок Console.WriteLine.Что бы я ни пробовал, newFieldName - это пустой набор.
На всякий случай вот первый элемент клиентского файла:
<Column_0 n="Policy Number">ABC000123</Column_0>
И вот первый элемент коллекции _sourceEntries:
<Field n="Policy Number" c="1" l="" s="" cd="" m="1805" f="" />
Я знаюэто будет что-то простое, но я просто не вижу, что я делаю неправильно.
Спасибо.
Рэнди