如何从c#中的StringCollection中删除重复项?

Tas*_*han 1 c# collections

如何从c#中的StringCollection中删除重复项?我一直在寻找一种更有效的方法.StringCollection从API返回.

Nol*_*rin 9

只需使用a HashSet<string>作为你的收藏,而不是StringCollection.它旨在通过比较这些元素的哈希码来防止添加重复元素(因此非常有效).

编辑:因为看起来StringCollection首先返回了一个,所以解决方案应该是循环遍历所有项目StringCollection并将它们添加到a HashSet<string>,从而消除重复.该Enumerable.Distinct扩展方法也将做的工作,但效率较低,我怀疑,因为它使用散列(而只是正常的平等的测试).像这样的东西:

var noDuplicatesItems = stringCollection.Cast<string>().Distinct().ToArray();
Run Code Online (Sandbox Code Playgroud)