AngleSharp by Florian Rappl

<PackageReference Include="AngleSharp" Version="0.8.1" />

 NodeList

Represents a list of Node instances or nodes.
using System.Collections; using System.Collections.Generic; using System.Text; namespace AngleSharp.Dom.Collections { internal sealed class NodeList : INodeList, IEnumerable<INode>, IEnumerable { private readonly List<Node> _entries; public Node this[int index] { get { if (index < 0 || index >= _entries.Count) return null; return _entries[index]; } set { _entries[index] = value; } } INode INodeList.this[int index] { get { return this[index]; } } public int Length => _entries.Count; internal NodeList() { _entries = new List<Node>(); } internal NodeList(NodeList existing) { _entries = new List<Node>(existing._entries); } internal void Add(Node node) { _entries.Add(node); } internal void AddRange(NodeList nodeList) { _entries.AddRange(nodeList._entries); } internal void Insert(int index, Node node) { _entries.Insert(index, node); } internal void Remove(Node node) { _entries.Remove(node); } internal void RemoveAt(int index) { _entries.RemoveAt(index); } internal bool Contains(Node node) { return _entries.Contains(node); } public IEnumerator<INode> GetEnumerator() { return _entries.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return _entries.GetEnumerator(); } public string ToHtml() { StringBuilder stringBuilder = Pool.NewStringBuilder(); foreach (Node entry in _entries) { stringBuilder.Append(entry.ToHtml()); } return stringBuilder.ToPool(); } } }