Метод поиска / устранения повторяющихся строк - PullRequest
2 голосов
/ 15 августа 2011

Я пытаюсь найти решение, устраняя повторяющиеся строковые имена, скажем, например, в буквальном поле, я заполняю имена автора определенной версии истории статьи, и поэтому, если «Рон» внеспри версии статьи 3 раза имя «ron» добавляется к этому буквальному элементу управления и выдает «ron» 3 раза.в состоянии заполнить это только один раз.Как мне этого добиться?

Ответы [ 5 ]

2 голосов
/ 15 августа 2011

Я бы предложил вам использовать словарь, ключами которого будут имя автора (или поле, которое вы не хотите повторять), а значениями будут списки участников. Например,

Dictionary<string, List<Contributor>> contributors 
           = new Dictionary<string, List<Contributor>>();


Contributor contributor = new Contributor("ron", /*other values*/);
if ( !contributors.ContainsKey(contributor.Name) )
     contributors.Add(contributor.Name,new List<Contributor>());

contributors[contributor.Name].Add(contributor);
1 голос
/ 15 августа 2011

В зависимости от вашей настройки, я либо использую StringCollection и просто проверяю, существует ли имя до вставки, либо просто добавляю все имена в список и вызываю Distinct () (метод расширения в System.Linq). Так что либо:

StringCollection Names=new StringCollection();
if(!Names.Contains(Name))
   Names.Add(Name);

Как предлагает Чарит J, или:

List<string> Names=new List<string>();
Names.Add(Name);
...
foreach(string Name in Names.Distinct())
{
...
}

Либо будет достаточно хорошо работать.

0 голосов
/ 15 августа 2011

Создайте модель того, чего вы хотите достичь (это как модель представления), которая управляет рендерингом вашего «отчета». Затем модель может контролировать это требование «выводить каждое имя только один раз». Псевдокод следует:

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.

0 голосов
/ 15 августа 2011
StringCollection authors= new StringCollection();

if (!authors.Contains("Ron"))
{
    authors.Add("Ron");
}
0 голосов
/ 15 августа 2011

Используйте функцию C # s .Contains (), чтобы проверить, было ли имя уже добавлено в строку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...