2017-08-17 67 views
-3

我正在查看有關數據挖掘算法的教程,無法從教程中複製一行代碼以生成我自己的「詞彙表」變量(如教程叫它)。創建從字符串列表中的所有不同單詞的字典C#

基本上教程頁面上的代碼是:

List<string> x = textBox1.Text.Split(',').ToList(); 
var vocabulary = x.SelectMany(GetWords).Distinct().OrderBy(word => word).ToList(); 

但是,當我把它複製到Visual Studio中,我得到以下錯誤:

The name 'GetWords' does not exist in the current context.

相信我,我並不缺什麼從教程。我所尋找的是要實現以下的方法:

enter image description here

考慮這一點,併產生這樣的:

enter image description here

(忽略教程圖片上的數字)

我試過下面的代碼,但它們從字符串中返回整個元素:

 //var vocabulary = x.OrderBy(q => q).Distinct().ToList(); 

     //var vocabulary = (from w in x 
     //     select w).Distinct().ToList(); 

     //   IEnumerable<Word> vocabulary = 
     //(from w in x.Distinct() 
     // select new Word { Text = w.ToString() }).ToList(); 

Link to the tutorial

任何幫助將得到高度讚賞。

+0

GetWords是一個仿函數(獲取您的收集項類型的參數的方法)。 – KamikyIT

+1

它看起來像沒有變量或方法命名'GetWords'範圍 –

+0

沒有,我只是想達到與教程 –

回答

0
private static IEnumerable<string> GetWords(string x) 
    { 
     return x.Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries); 
    } 

我應該先徹底搜索一下。此代碼有效。感謝所有的幫助。

+0

那還包括1和2嗎? – mjwills

+0

你會認爲Microsoft *的首席開發人員會知道這樣的事情...... :) – Liam

0

如果輸入看起來像CSV文件,然後再考慮:

var test = "Sunny,1\r\nSunny,2\r\nBobb,1"; 
var lines = test.Split('\r', '\n'); 
var vocabulary = lines.Select(z => z.Split(',')[0]) 
    .Where(z => !string.IsNullOrEmpty(z)) 
    .Distinct() 
    .OrderBy(word => word) 
    .ToList(); 

這將讓你的文字,每行的逗號前,然後刪除重複。

相關問題