c#でcsvから指定の1行だけを読み込む方法
以前c言語で同じような質問をして、とても有益な回答を頂きましたが、
今回c#でのコードの書き方をご教示いただければと思い、再度質問致します。
例えば以下のようなcsvファイルがあったとします。
ab1,ef2,ab3,af4,ab5
bb1,bf2,bb3,bf4
cb1,cf2,cb3,cf4,cb5
zb1,zf2,zb3,zf4,zb5
プログラムに"cb3"という文字列を探させて、その文字列を含む一行
"cb1,cf2,cb3,cf4,cb5"のみを読み込む方法を探しております。
現時点では以下のコードにてcsvファイルを丸々読み込んでおります。
private void LoadData()//csvファイルを読み込む
{
string path = "abc.csv";
string delimStr = ",";//区切り文字
char[] delimiter = delimStr.ToCharArray();//区切り文字をまとめる
string[] strData;//分解後の変数
string strLine; //1行分のデータ
Boolean fileExists = System.IO.File.Exists(path);
if (fileExists)
{
System.IO.StreamReader sr = new System.IO.StreamReader(
path,
System.Text.Encoding.Default
);
while (sr.Peek() >= 0)
{
strLine = sr.ReadLine();
strData = CsvToArrayList1(strLine)[0];
abc.abctable.AddabctableRow
(
strData[0],
int.Parse(strData[1])
);
} sr.Close();
}
c言語の時はstrstrで特定の文字を含む1行のみを取得できたのですが、
c#ではもっと良い方法があるのではと考えております、
お時間がありましたら是非教えてください。
皆様の丁寧な回答にいつも感謝しております。
お礼
ありがとうございます。エラー発せず動きました。 エラーの原因はまだわからないのですが、教えていただいたコードを見て、未熟ゆえ、「1行ごとに読み込み、サイズも取得して・・・」だからStremReaderだろう、という発想しか浮かばず、クラスの種類や内容を良く理解していないことがそもそもの原因なんだろうと思いました。 こんなにすっきりとしたコードでできるんですね、ありがとうございました。