private static void CompareRowResultToOutput(
            List<List<string>> output,
            char selfIdentifier,
            char matchIdentifier,
            CompareRowFinalResult[] compareRowFinals,
            Action<List<CompareColumnResult>, List<string>> columnPrinter
            )
        {
            for (int firstIndex = 0; firstIndex < compareRowFinals.Count(); firstIndex++)
            {
                var compareRowFinal = compareRowFinals[firstIndex];

                // # Identifier Column
                var outputLine = new List<string>();
                outputLine.Add(selfIdentifier + (firstIndex + 1).ToString());

                // Match Column
                if (compareRowFinal.matchQuality == MatchQuality.PerfectMatch)
                {
                    outputLine.Add(matchIdentifier + (compareRowFinal.index + 1).ToString());
                }
                else if (compareRowFinal.matchQuality == MatchQuality.Partial)
                {
                    outputLine.Add("? " + matchIdentifier + (compareRowFinal.index + 1).ToString());
                }
                else
                {
                    outputLine.Add(" ");
                }

                // Error Column
                if (compareRowFinal.matchQuality == MatchQuality.None)
                {
                    outputLine.Add("No Match");
                }
                else if (compareRowFinal.matchQuality == MatchQuality.PerfectMatch)
                {
                    var totalErrors = compareRowFinal.compareRowResult.totalErrors;
                    if (totalErrors != 0)
                    {
                        outputLine.Add(totalErrors.ToString() + " Columns");
                    }
                    else
                    {
                        outputLine.Add("perfect");
                    }
                }
                else
                {
                    // Partial
                    var totalErrors = compareRowFinal.compareRowResult.totalErrors;
                    if (totalErrors != 0)
                    {
                        outputLine.Add("Best " + totalErrors + " Columns");
                    }
                }

                columnPrinter(compareRowFinal.compareRowResult.columnResults, outputLine);

                output.Add(outputLine);
            }
        }