C# CSV文件";唯一ID";-读写

C# CSV文件";唯一ID";-读写,c#,csv,unique-key,C#,Csv,Unique Key,我试图让我的程序将一个随机唯一的数字写入CSV文件,我可以写入该文件,但我在读取/随机功能方面遇到了一些问题 它应该检查我的第二列(1)中的OR编号。如果存在,则保持随机化,如果不存在,则在CSV文件中写入新行 长话短说:如何将字符串(或)与列值进行比较 public string OR = string.Empty; private void randomize() { int Number; Random r = new Random(); Number = r.N

我试图让我的程序将一个随机唯一的数字写入CSV文件,我可以写入该文件,但我在读取/随机功能方面遇到了一些问题

它应该检查我的第二列(1)中的OR编号。如果存在,则保持随机化,如果不存在,则在CSV文件中写入新行

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

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");
    }
}
公共字符串或=string.Empty;
私有void随机化()
{
整数;
随机r=新随机();
数字=r.Next(1,5);
或=转换为字符串(数字);
}
私有无效按钮2\u单击(对象发送者,事件参数e)
{
随机化();
var reader=newstreamreader(File.OpenRead(“Database.csv”);
List listA=新列表();
List listB=新列表();
var line=reader.ReadLine();
var值=行分割(',');
//继续随机化,直到找到新的数字
而(!reader.EndOfStream&&values[1].ToString()==或)
{
随机化();
MessageBox.Show(或+“WHILE”);
}
//如果数字不等于现有数字,则写入
if(值[1]。ToString()!=或)
{
标签1.Text=或;
MessageBox.Show(或+“如果”);
//reader.Close();
//reader.Dispose();
//writeTo();
}
}
公开无效令状()
{
使用(StreamWriter sw=new StreamWriter(“Database.csv”,true))
{
sw.WriteLine(“嘿”+”、“+或+”、“+”测试”);
}
}

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


需要随机唯一编号的意义或原因是什么?@Shoe随机编号没有具体原因,我只希望这样,但它必须是唯一的数字,因为我在一些PDF文档中使用它。您每次都在创建
随机
类,默认情况下,该类使用系统时钟的种子,因此将给出许多相同的结果。创建一次并使用相同的实例获取唯一数字的好方法是使用
DateTime.Now.ToString(“yymmddhmmssfff”)如果您没有随机要求,我会使用它,因为它更简单。@dkozl我不需要多次按下按钮才能得到结果吗(写入文件)?如果答案很明显,请原谅,但我在C还是个新手#