2016-10-27 30 views
0

我有一个关于方法distinct()在C#中的问题。 我有一个字符串列表。distinct()方法为列表中的唯一字符串C#

List <string> stringtxt = stringtxt.distinct().ToList(); 

例如在我的stringtxt列表字符串:

"A" 
"B" 
"C" 
"B" 
"E" 

我如何能实现这一点,我只得到输出 “A” “B” “C” “E”。不要使用接口“IEquatable”或任何HashCodes。 我使用了一个foreach循环来解决这个问题。

foreach(var stringitem in stringtxt) 
{ 
    tb.text = stringitem; 
} 

但我不确定这是否是解决此问题的最佳方法。


从下面的评论:

对不起我试图问这样的问题可以理解的:D同样,这我我的代码:

List<string> stringvalues = new List<string>(); 
stringvalues.Add("A"); 
stringvalues.Add("ccc"); 
stingvalues.Add("B"); 
stingvalues.Add("B"); 
stingvalues.Add("E"); 
stringvalues.Add("hello"); 
List<string> stringtxt = stringvalues.Distinct().ToList(); 

//Output 
A,ccc,B,E,hello 
+2

请提供[MCVE] - 固定错字后,您的代码不应该产生任何重复反正'鲜明()'只返回不同的值。目前尚不清楚文本框是如何相关的,或者你如何声明'stringtxt'并在其初始化器中使用'stringtxt' ... –

+1

不清楚。 'List stringtxt = stringtxt.Distinct()。ToList();'是循环的,不会编译。那么你的投入是什么样的,哪些不起作用? –

+0

你不能声明一个变量并在同一语句中使用它作为源:'List stringtxt = stringtxt ....' –

回答

0

我看到你只需要把不同的列表返回到字符串?然后你只需要下面的最后一行:

List<string> stringtxt = new List<string>() 
{ 
    "A", 
    "B", 
    "C", 
    "B", 
    "E" 
}; 
stringtxt = stringtxt .Distinct().ToList(); // avoid redeclaring stringtxt as List<string> 
// combine the stringlist into a string with , separator 
string output = string.Join(",", distinctStringList); 
+0

很多假设... –

+0

谢谢@ kurakura88,但我不能使用拆分功能,因为我有一个字符串列表 – flowers1234

0

创建hashtable,经历了foreach您的所有字符串,并尝试添加它。如果失败,请忽略该错误。最后,只需打印散列表中的所有元素即可。

例如:

Hashtable hash= new Hashtable(); 
    foreach (var s in your_list) 
    { 

     try 
     { 
      hash.Add(s, s); 
     } 
     catch 
     { 
      // will happen if exists 
     } 
    } 
+0

非常感谢,我已经完成这与一个哈希表,我也得到了相同的结果。所以为了唯一性,我可以使用方法distinct(),或者我可以实现散列表右:) :)? – flowers1234

+0

是的。我将使用不同的,它为你做的工作,但如果你想自己做,哈希表或字典将很好地做。你可以用列表来完成,但是运行时间会受到影响(不是你的玩具清单中的100个项目,但时间将是指数。 – Noctis

相关问题