<< 26, FileOptions.SequentialScan))
using (var xmlReader = XmlReader.Create(xmlStream, new XmlReaderSettings() { Async = true }))
{
bool firstLineRead = false;
while (await xmlReader.ReadAsync())
{
if (!firstLineRead && xmlReader.Name == XmlNodeNameToIgnore)
{
firstLineRead = true;
continue;
}
if (xmlReader.NodeType == XmlNodeType.Element)
{
var attrbutes = new Dictionary<string, string>(Attributes.Count);
foreach (var attribute in Attributes.OrderBy(x => x))
{
var fieldValue = xmlReader.GetAttribute(attribute);
fieldValue = String.IsNullOrWhiteSpace(fieldValue) ? null : fieldValue;
attrbutes.Add(attribute, fieldValue);
}
resultCollection.Add(attrbutes);
}
}
resultCollection.CompleteAdding();
}
Даже код откопал
Токо вместо resultCollection.Add(attrbutes); втыкаешь yield return attributes, потому что целиком держать resultCollection в памяти ты не хочешь. (изначально разговор был именно про этот поинт)
Обсуждают сегодня