2011-08-14 23 views
2

我试图找到一个解决方案,以消除重复字符串名称,说为前,在文字领域 ,我填充的某些文章的历史版本贡献者的名字,等等,如果“ron”对文章的版本化作出了3次贡献,则名称“ron”被添加到该文字控件中,并输出“ron”3次。方法来查找/消除重复的字符串

我试图找到,如果一个名字重复了两次,我应该能够填充它只有一次。我怎样才能做到这一点?

+2

一个非常简单的答案是寻找某种一套。集合是仅允许对象的一个​​实例的数据结构,例如, “ron”,在结构中。这样当你需要从设置中提取数据时,“ron”只会出现一次。 – Alastair

+0

这不完全清楚你的源字符串是什么,以及你的输出是什么。这是一个CMS系统 - - 和在字面控制填充作者的名字,通过内容的版本迭代作者 –

+0

p.campbell嗨,我使用的是作者的名字晔的API获得。 – Ron

回答

1

根据您的设置,我要么使用一个StringCollection,只是检查名称之前插入或只是所有的名字添加到列表中,并调用鲜明的()(在扩展方法存在System.Linq的)。因此,要么:

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

由于CharithJ建议,或:

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

要么将​​工作不够好。

+0

谢谢,我会试试看。 – Ron

0

使用C#小号。载有()函数来检查,如果名字已经被添加到字符串

+0

这听起来更容易解决,将尝试这一点。谢谢。 – Ron

0

创建的要达到(它就像一个视图模型)什么是模型驱动呈现您的“报告”。然后,该模型可以控制“仅输出一次每个名称”的需求。伪代码如下:

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 

然后您使用该输出填充您的文字控件。

如果您使用简单的字符串替换,你会ronnie混合起来ron

+0

不熟悉MVC ...谢谢无论如何。 – Ron

0
StringCollection authors= new StringCollection(); 

if (!authors.Contains("Ron")) 
{ 
    authors.Add("Ron"); 
} 
+0

如果列表中有多个项目,则列表不适合查找。散列集或字典是数据结构,为其中一个或一百万个用户同样快速。列表相反。 –

+0

@阿洛伊斯:感谢downvote。这个问题是否说有几位作者?这听起来好像有超过10个StringCollection可以成为候选人的项目。 – CharithJ

+0

@CharithJ:雅,我拉起使用晔的API调用,其中,对于内容可能有1名作者(投稿)或者多张供款人谁可以编辑内容,或同一作者,谁可以编辑和版本,它的贡献者的名字多次。那就是我试图去除的部分,如果它有多次相同的作者。 – Ron

2

我会建议你使用词典,其关键字将作者姓名(或您不希望重复字段)和值将是捐助者的名单。例如,

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); 
+0

我不知道,我能得到这个工作,因为我拉起晔使用API​​调用的作者名单...但会尝试。感谢您的建议@Nawaz – Ron

相关问题