Вам нужно позвонить .ToArray
? Мне непонятно, почему нельзя просто зацикливаться на добавлении в словарь (или звонить .ToDictionary
). Тем не мение; ты профилировал? Если является узким местом, вы можете попытаться вернуться к XmlReader
и рассматривать его как пожарный шланг:
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element
&& reader.GetAttribute("attribName") == attribValue)
{
/* do something interesting for fun and profit */
}
}
С вашим существующим кодом, я бы очень хотел сделать это:
vm.Where(a => (string)a.Attribute(attribute) == ab)
Разница в том, что если не вызывать .Value
, это должно работать, даже если атрибут не установлен. Конечно, если вы требуете , чтобы этот атрибут всегда был установлен, тогда в этом случае может быть допустимо исключение.