protected override List <TplResult> InnerProcess(List <TplResult> input) { var dict = new ConcurrentDictionary <long, TplResult>(); long resultNum = 0; Parallel.ForEach(input, result => { if (result.HasField(TargetField)) { var match = Rex.Match(result.StringValueOf(TargetField)); if (match.Success) { var groupNames = Rex.GetNamedCaptureGroupNames(); foreach (var key in groupNames) { result.AddOrUpdateField(key, match.Groups[key].Value); } if (!PassThru) { dict.TryAdd(resultNum, result); resultNum++; } } } }); //Return if (!PassThru) { var output = new List <TplResult>(dict.Count); for (long i = 0; i < dict.Count; i++) { output.Add(dict[i]); } return(output); } else { return(input); } }