/// <summary> /// Filters a list of Chunks, keeping those which match the predicate /// </summary> /// <remarks>The original list is not altered</remarks> /// <param name="list"></param> /// <param name="predicateKeep"></param> /// <returns></returns> public static List <PngChunk> FilterList(List <PngChunk> list, IChunkPredicate predicateKeep) { List <PngChunk> result = new List <PngChunk>(); foreach (PngChunk element in list) { if (predicateKeep.Matches(element)) { result.Add(element); } } return(result); }
/// <summary> /// Filters a list of Chunks, removing those which match the predicate /// </summary> /// <remarks>The original list is not altered</remarks> /// <param name="list"></param> /// <param name="predicateRemove"></param> /// <returns></returns> public static int TrimList(List <PngChunk> list, IChunkPredicate predicateRemove) { int cont = 0; for (int i = list.Count - 1; i >= 0; i--) { if (predicateRemove.Matches(list[i])) { list.RemoveAt(i); cont++; } } return(cont); }