Файловый объект является буфером . Когда вы читаете из буфера, потребляемая вами часть (позиция чтения сдвигается вперед). Когда вы читаете весь файл, позиция чтения находится в EOF, поэтому он ничего не возвращает, потому что читать нечего.
Если вам по какой-то причине необходимо сбросить позицию чтения на файловый объект, вы можете сделать:
f.seek(0)
Вы только смотрите на атрибут Series
в этом подзапросе :
where (
from thread in el.Elements("ThreadDensity")
where
(string)thread.Attribute("Series") == "UNF"
select thread).Any() &&
((string)el.Element("Size") == "#1")
, который просто проверяет, есть ли какой-либо элемент ThreadDensity
внутри [ 115] имеет правильную серию.
Код, в котором вы фактически создаете UTSBolt
, просто получает первый элемент ThreadDensity
:
select new UTSBolt(
(string)el.Element("Size"),
(double)el.Element("MajorDiameter"),
(double)el.Element("ThreadDensity")
);
Я подозреваю, что вы хотите что-то вроде:
[ 112]