2014-02-15 29 views
0

我试图让我的程序将一个随机唯一编号写入CSV文件,我可以写入该文件,但我遇到了一些阅读/随机问题特征。CSV文件的“唯一ID” - 读写

它应该检查我的第二列(1)的OR数。如果它存在保持随机性,并且不存在,则向CSV文件写入新行。

长话短说:如何将我的字符串(OR)与列值进行比较?

public string OR = string.Empty; 

private void randomize() 
{ 
    int Number; 
    Random r = new Random(); 
    Number = r.Next(1, 5); 
    OR = Convert.ToString(Number); 
} 
private void button2_Click(object sender, EventArgs e) 
{ 
    randomize(); 

    var reader = new StreamReader(File.OpenRead("Database.csv")); 
    List<string> listA = new List<string>(); 
    List<string> listB = new List<string>(); 
    var line = reader.ReadLine(); 
    var values = line.Split(','); 

    // Keep randomizing until a new number has been found 
     while (!reader.EndOfStream && values[1].ToString() == OR) 
     { 
      randomize(); 
      MessageBox.Show(OR + " WHILE"); 
     } 
    // Write if number doesn't equal to a existing one 
     if (values[1].ToString() != OR) 
     { 
      label1.Text = OR; 
      MessageBox.Show(OR + " IF"); 
      //reader.Close(); 
      //reader.Dispose(); 
      //writeTo(); 
     } 

} 

public void writeTo() 
{ 
    using (StreamWriter sw = new StreamWriter("Database.csv", true)) 
    { 
     sw.WriteLine("hey" + "," + OR + "," + "test"); 
    } 
} 
+0

需要一个随机和唯一的数字的意义或原因是什么? – Shoe

+0

@Shoe它没有具体的理由被随机化,我只是喜欢这种方式,但它必须是唯一的数字,因为我使用它的一些PDF文档。 –

+0

你每次创建'Random'类,默认情况下这个类使用系统时钟的种子,所以会得到很多相同的结果。创建一次并使用相同的实例 – dkozl

回答

0

我真的不明白你的问题,我会用i + 1因为这是唯一在它的最纯粹的形式,但很可能你有很好的理由所以这里是你可能想使用一个片段:

Guid.NewGuid().ToString()