CSVファイルのデータをListに格納したい
C#でCSVファイルからデータを読み込んで
条件に一致した場合のみ、対象データをListに格納したいと思っています。
読み込むデータは、下記になります。
CSVFile
1000,123,123 200,123,123 3000,234,567 400,234,567
上記のデータをYESという名前のListに格納することは出来たのですが、下記のようになってしまいます。
000,123,123,000,234,567
これを、下記のようにしたいです
000,123,123
000,234,567
C#
1List<string> lists = new List<string>(); 2 3if(System.IO.File.Exists("CSVFile")) 4{ 5 using(StreamReader reader = new StreamReder("CSVFile",Encoding.GetEncoding("Shift_JIS"))) 6 { 7 string line; 8 while((line = reader.ReadLine()) != null) 9 lists.Add(line); 10 } 11 if(lists.Count != 0) 12 { 13 14 for(int i = 0; i<lists.Count; i++) 15 { 16 string[] value = lists[i].Split(',') 17 List<string> item = new List<string>(); 18 item.AddRange(value); 19 20 if(item[0].Length != 2) 21 { 22 List<string> YES = new List<string>(); 23 for(int x = 0; x<item.Count; x++) 24 { 25 YES.Add(item[x]) 26 } 27 } 28 } 29 } 30
条件というのは、item[0].Length != 2 の時に、条件にあったデータを行で取得したいです。
分かりにくい説明ですみません。
よろしくお願い致します
> 条件に一致した場合のみ、
何を条件にしているのか、質問文からもご提示のコードからも分かりませんので、明確にしましょう。
> 上記のデータをYESという名前のListに格納することは出来たのですが、下記のようになってしまいます。
000,123,123,000,234,567
ってどういうふうに確認したもんなんでしょうか。
また、あなたの説明は意味不明です
Listにどういうふうに格納したいのか具体的に説明しましょう
すみません、条件はitem[0].Length != 2 の時です
取得したいデータは行です。
YESのリストにAddで追加しているだけで、
> 000,123,123,000,234,567
と出力している部分が見当たりませんが。まぁ、ひたすらAddしたものを出力しているから、そうなっているだけなのだと思います。
List<List<string>> 型にしてはいかがですか?
while((line = reader.ReadLine()) != null)
lists.Add(line);
}
の時点で、CSVの1つ目の要素の文字列が2文字でなければそのままlineを出力して良いのであれば、Listなどのコレクションに収める必要も無いでしょう。CSVの各要素をその後使うかどうか、に関わってくると思います。
コードを載せるなら、せめてコンパイルが通る状態で載せてください。
・new StreamReder←クラス名が間違っている
・lists[i].Split(',') の後のセミコロンが不足している
・YES.Add(item[x]) の後のセミコロンが不足している
回答1件
あなたの回答
tips
プレビュー