2011-09-16 48 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()查询,那么您将避免重复出现在最终结果中。