私は最近、トレーディングカード用のデータを保持するコードについて尋ねました。私は、CSVファイル内のカードの全体的なリストを含むファイルを持っています。私は、カード番号が選択され、送信ボタンが押されたときに、CSVファイルから行を削除する方法があるかどうか疑問に思っていました。私は現在持っているコードは次のとおりです。コンボボックスから選択され、ボタンが押されたときにcsvファイルから行を削除する
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
namespace YuGiOh_Card_List
{
public partial class frmAddLOB : Form
{
List<string> cardNo = new List<string>();
List<string> cardName = new List<string>();
List<string> cardRarity = new List<string>();
List<string> cardType = new List<string>();
public frmAddLOB()
{
InitializeComponent();
StreamReader reader = File.OpenText("..\\Debug\\lobList.csv");
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(',');
cardNo.Add(values[0]);
cardName.Add(values[1]);
cardRarity.Add(values[2]);
cardType.Add(values[3]);
cboCardNo.Items.Add(values[0]);
}
reader.Close();
}
private void cboCardNo_SelectedIndexChanged(object sender, EventArgs e)
{
lblCardNoFinal.Text = cardNo[cboCardNo.SelectedIndex];
lblCardNameFinal.Text = cardName[cboCardNo.SelectedIndex];
lblCardRarityFinal.Text = cardRarity[cboCardNo.SelectedIndex];
lblCardTypeFinal.Text = cardType[cboCardNo.SelectedIndex];
}
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");
}
}
}
だから私は行が「loblist.csv」から除去し、(それが現在やっている)LOBファイルに追加することにしたいです。ありがとう
ではなく、各カードの特定の側面を表す並列コレクション、それは容易になるだろうが、(エラーが発生しにくい)、1つのコレクションであるCardクラスを作成します。保存は2-3行のシリアライゼーションまたはループであり、コレクション内にあるものを書き込むことができます – Plutonix
ソースファイル内のすべての行は一意ですか? –
すべてのラインが一意です – fg2210