使用LINQ从数组中选择不同的单词列表

Dav*_*Dev 10 c# linq distinct

我正在尝试使用以下代码从单词数组中获取不同的单词列表:

string words = "this is a this b";

var split = words.Split(' ');

IEnumerable<Word> distinctWords = (from w in split
                          select new Word
                                     {
                                         Text = w.ToString()
                                     }
                         ).Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)

我认为这会消除'this'的两次出现,但它会返回一个短语中每个单词的列表.

有人可以建议我如何获得一个明确的清单?谢谢

戴夫

Jam*_*ran 23

在您的示例中,每个Word对象都是不同的,因为没有比较查看Text属性.

但是,没有理由创建新对象:

var distinctWords = (from w in split 
                      select w).Distinct().ToList(); 
Run Code Online (Sandbox Code Playgroud)

或者更简单:

var distinctWords = new List<string>(split.Distinct());
Run Code Online (Sandbox Code Playgroud)