2016-11-25 73 views
-5

我有一個文本文件巫婆包含這樣的值:插入一個文本文件與C#中的哈希表

0000000000 
0000111222 
0000144785 

我需要插入該文件與C#中的哈希表,這是我做了什麼等等遠:

 string[] FileLines = File.ReadAllLines(@"D:TestHash.txt"); 

     Hashtable hashtable = new Hashtable(); 

     foreach (string line in FileLines) 
     { 
      // dont know what to do here 
     } 

和之後,我需要匹配從文本框中的值與散列表值。我該怎麼辦?

+3

爲什麼'Hashtable',而不是一個的Hashset''的價值? – fubo

+0

散列表有一個鍵和一個值。你想做什麼?插入文件行作爲鍵和值?爲鑰匙使用別的東西? – Jamiec

+1

嘗試'hashtable.add(hashtable.count.ToString(),line);' –

回答

4

A Hashtable是用於鍵值對的容器。既然你只有值,而不是鍵值對,你不需要一個哈希表,你需要一個HashSet:如何使用哈希一套(包括一個例子)

HashSet<string> fileLineSet = new HashSet<string>(FileLines); 

檢查MSDN

+0

這有效,但如何做匹配的事情?你能給一個辦法嗎? –

+0

你最好的,解決了! –

1

這讀取所有的行成一個HashSet,並檢查一個TextBox的反對

HashSet<string> items = new HashSet<string>(File.ReadLines(@"D:\TestHash.txt")); 
bool hasValue = items.Contains(TextBox.Text); 
0
static void Main(string[] args) 
    { 
     string[] FileLines = File.ReadAllLines("your text file path"); 

     Hashtable hashtable = new Hashtable(); 

     foreach (string line in FileLines) 
     { 
      if (!hashtable.ContainsKey(line)) 
      { 
       hashtable[line] = line; 
      } 
     } 
     foreach (var item in hashtable.Values) 
     { 
      //here you can match with your text box values... 
      //why you need to insert text file data into hash table really i dont know.from above foreach loop inside only you can match the values.might be you have some requirement for hash table i hope 
      string textboxVal = "text1"; 
      if (item == textboxVal) 
      { 
       //both are matched.do your logic 
      } 
      else{ 
       //not matched. 
     } 
     } 
    } 
+0

嗨fubo,我希望我的回答可能對你有所幫助。 – Surya

+0

你能爲你的代碼添加一點解釋嗎?這將有助於我們理解答案。 – sam

+0

將文本文件數據讀入FileLines變量。首先foreach循環循環文件數據,並將這些值作爲散列表鍵和vaues保存到散列表中,這裏避免了通過if條件將重複記錄添加到散列表。稍後循環哈希表值並與文本框值匹配。 – Surya