Создайте модель того, чего вы хотите достичь (это как модель представления), которая управляет рендерингом вашего «отчета». Затем модель может контролировать это требование «выводить каждое имя только один раз». Псевдокод следует:
var ron = new Author("ron");
var ronnie = new Author("ronnie");
var report = new HistoryReport();
report.AddVersion(1, ron);
report.AddVersion(2, ron);
report.AddVersion(3, ronnie);
string renderedReport = report.Render();
// output e.g.:
// Versions 1 and 2 by ron; Version 3 by ronnie
Затем вы используете этот выход для заполнения вашего буквального контроля.
Если вы используете простую подстановку строк, вы смешаете ron
с ronnie
.