2011-09-16 46 views
2

嗨我有一個程序,我加載所有行的文本框內部,並從焦炭:重複的名單C#問題條目

其拆分它工作正常和所有,但它複製它。我得到的輸出是:

ID: 1NAME: Stone 
ID: 1NAME: Stone 
ID: 2NAME: Grass 
ID: 2NAME: Grass 
ID: 3NAME: Dirt 
ID: 3NAME: Dirt 

當輸出應該是:

ID: 1NAME: Stone 
ID: 2NAME: Grass 
ID: 3NAME: Dirt 

我的代碼是:

foreach (String line in File.ReadAllLines("item.ids")) 
    { 
     items = line.Split(':'); 


     foreach (String part in items) 
     { 
      addToList(specs, "ID: "+line.Split(':').First() + "NAME: "+line.Split(':').Last()); 
     } 
    } 

我在做什麼錯?

+0

請提供addToList()和該輸入 – Nitesh

回答

2

這是你的每個循環第二。這是沒有必要的:

foreach (String line in File.ReadAllLines("item.ids")) 
{ 
    items = line.Split(':'); 
    addToList(specs, "ID: "+line.Split(':').First() + "NAME: "+line.Split(':').Last()); 

} 

如果你看一下你的代碼,你不使用part但循環從Split(':')這是給你的長度的字符串數組結果2

4

我認爲你需要寬鬆內每個。 保持通話,以addToList,雖然

// for every line in the file.... 
foreach (String line in File.ReadAllLines("item.ids")) 
{ 
    //get the parts by splitting the line on the colon 
    items = line.Split(':'); 

    //for every item in the parts (there are two parts, according to your code) 
    // so this will loop twice--adding your item twice 
    foreach (String part in items) 
    { 

    // you are splitting again, and this is not necessary 
    // you could just call items.First() or items[0] 
    // and items.Last() or items[1] 
    addToList(specs, "ID: "+ line.Split(':').First() + 
         "NAME: "+line.Split(':').Last()); 
    } 
} 

我會做這樣的事情來解決它:

foreach (string line in File.ReadAllLines("item.ids")) 
{ 
    items = line.Split(':'); 
    addToList(specs, "ID: " + items.First() + 
        "NAME: "+ items.Last()); 
} 
0

你有沒有保證,你做沒有你在讀取文件中的行重複的行或條目?

如果您插入到HashSet<string>或對現有列表運行LINQ Distinct()查詢,那麼您將避免重複出現在最終結果中。