AngleSharp by Florian Rappl

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

 NodeList

Represents a list of Node instances or nodes.
using AngleSharp.Html; using System.Collections; using System.Collections.Generic; using System.Text; namespace AngleSharp.Dom.Collections { internal sealed class NodeList : INodeList, IEnumerable<INode>, IEnumerable, IMarkupFormattable { 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() { return ToHtml(HtmlMarkupFormatter.Instance); } public string ToHtml(IMarkupFormatter formatter) { StringBuilder stringBuilder = Pool.NewStringBuilder(); for (int i = 0; i < _entries.Count; i++) { string value = _entries[i].ToHtml(formatter); stringBuilder.Append(value); } return stringBuilder.ToPool(); } } }