使用Linq只返回一次项目

Ser*_*pia 2 .net c# linq distinct

这就是我想要做的.使用由空格分隔的一系列数字.保存这些数字后,我想只返回一次所有数字的字符串,即使数字在序列中出现n次.

string[] tempNumbers = textValue.Split(' ');

IEnumerable<string> distinctNumbers = tempNumbers.Where(value => value.Distinct());
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

Error   2   Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<char>' to 'bool' c:\users\sergio\documents\visual studio 2010\Projects\LinqPlayground\LinqPlayground\SetSemanticsExample.cs  67  75  LinqPlayground
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 6

扩展方法IEnumerable.Distinct不是谓词函数.它在a上运行IEnumerable<T>并返回一个新IEnumerable<T>元素,其中每个元素只出现一次.

要修复代码,请执行以下操作:

IEnumerable<string> distinctNumbers = tempNumbers.Distinct();
Run Code Online (Sandbox Code Playgroud)

我想只返回一次所有数字的字符串

如果您希望将结果作为单个空格分隔的字符串,那么除了上述内容之外,您还需要调用string.Join:

string result = string.Join(" ", distinctNumbers.ToArray());
txtResult.Text = result;
Run Code Online (Sandbox Code Playgroud)