防止重复条目优秀

我在空闲时间创build一个程序来存储我的交易卡收集信息。 我想知道是否有任何方法来防止使用File.AppendAllText方法重复进入Excel的条目。 我目前的代码是:

private void btnAdd_Click(object sender, EventArgs e) { Global.card.Add(new Card(lblCardNoFinal.Text, lblCardNameFinal.Text, lblCardRarityFinal.Text, lblCardTypeFinal.Text)); string file = ("..\\Debug\\LOB.csv"); string delimiter = ","; StringBuilder sb = new StringBuilder(); foreach (Card card in Global.card) { sb.AppendLine(card.CardNo + delimiter + card.CardName + delimiter + card.CardRarity + delimiter + card.CardType); } File.AppendAllText(file, sb.ToString()); MessageBox.Show("Card Added"); } 

当我尝试添加多张卡片时,上一张卡片的数据被input到excel文件中,所以在我不需要时会显示两次。 谢谢

试试File.WriteAllTextFile.AppendAllText将文本添加到文件的底部。

或者,您可以为要添加的卡执行File.AppendAllLines ,如下所示:

 private void btnAdd_Click(object sender, EventArgs e) { string file = ("..\\Debug\\LOB.csv"); string delimiter = ","; var card = new Card(lblCardNoFinal.Text, lblCardNameFinal.Text, lblCardRarityFinal.Text, lblCardTypeFinal.Text) Global.card.Add(card); File.AppendAllLines(file, new[] {card.CardNo + delimiter + card.CardName + delimiter + card.CardRarity + delimiter + card.CardType}); MessageBox.Show("Card Added"); } 

它看起来,每当你添加单卡你从Global.card附加所有卡,所以我会摆脱foreach循环。 你可以追加这张单卡。 尝试像这样:

 Card newCard = new Card(lblCardNoFinal.Text, lblCardNameFinal.Text, lblCardRarityFinal.Text, lblCardTypeFinal.Text) Global.card.Add(newCard) File.AppendAllText(file, newCard.CardNo + delimiter + newCard.CardName + delimiter + newCard.CardRarity + delimiter + newCard.CardType); 

你也不需要StringBuilder,但是我会为你的Card类使用ToString方法。