質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

4280閲覧

CSVファイルのデータをListに格納したい

wwww

総合スコア1

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2021/01/15 00:47

編集2021/01/15 01:26

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 の時に、条件にあったデータを行で取得したいです。
分かりにくい説明ですみません。
よろしくお願い致します

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2021/01/15 01:11

> 条件に一致した場合のみ、 何を条件にしているのか、質問文からもご提示のコードからも分かりませんので、明確にしましょう。
y_waiwai

2021/01/15 01:19

> 上記のデータをYESという名前のListに格納することは出来たのですが、下記のようになってしまいます。 000,123,123,000,234,567 ってどういうふうに確認したもんなんでしょうか。 また、あなたの説明は意味不明です Listにどういうふうに格納したいのか具体的に説明しましょう
wwww

2021/01/15 01:28

すみません、条件はitem[0].Length != 2 の時です
wwww

2021/01/15 01:28

取得したいデータは行です。
dodox86

2021/01/15 01:32

YESのリストにAddで追加しているだけで、 > 000,123,123,000,234,567 と出力している部分が見当たりませんが。まぁ、ひたすらAddしたものを出力しているから、そうなっているだけなのだと思います。
退会済みユーザー

退会済みユーザー

2021/01/15 01:33

List<List<string>> 型にしてはいかがですか?
dodox86

2021/01/15 01:43 編集

while((line = reader.ReadLine()) != null) lists.Add(line); } の時点で、CSVの1つ目の要素の文字列が2文字でなければそのままlineを出力して良いのであれば、Listなどのコレクションに収める必要も無いでしょう。CSVの各要素をその後使うかどうか、に関わってくると思います。
退会済みユーザー

退会済みユーザー

2021/01/15 02:29

コードを載せるなら、せめてコンパイルが通る状態で載せてください。 ・new StreamReder←クラス名が間違っている ・lists[i].Split(',') の後のセミコロンが不足している ・YES.Add(item[x]) の後のセミコロンが不足している
guest

回答1

0

ベストアンサー

取得したいデータは行です。

なら、lists がすでにそういうふうになってますよ

投稿2021/01/15 02:00

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問