Linq ファイルの読み込み書き込み

C# Linq CSVファイルを2つ読み込んで、行ごとに比較するプログラムの作り方 おすすめの方法です

今回のテーマ

こんにちは、かっぱちゃんです。

今回はCSVファイルを2つ読み込んで、比較するプログラムを作ってみましょう。

Linqの使い方と読み込み方法の記事を読んでいれば簡単に出来ますよ!

KappaChan
今回はCSVファイルを二つ読み込んで比較するプログラムを作るかっぱ!!

比較するファイル

パスは「D:\csvtest」に「比較ファイル1.csv」と「比較ファイル2.csv」を置きました。

各ファイルの中身はこのようになっています。

 比較ファイル1.csv
図鑑番号,ポケモン名,タイプ1,タイプ2,HP,こうげき,ぼうぎょ,とくこう,とくぼう,すばやさ
1,フシギダネ,くさ,どく,45,49,49,65,65,45
2,フシギソウ,くさ,どく,60,62,63,80,80,60
3,フシギバナ,くさ,どく,80,82,83,100,100,80
4,ヒトカゲ,ほのお,NULL,39,52,43,60,50,65
5,リザード,ほのお,NULL,58,64,58,80,65,80
6,リザードン,ほのお,ひこう,78,84,78,109,85,100
7,ゼニガメ,みず,NULL,44,48,65,50,64,43
8,カメール,みず,NULL,59,63,80,65,80,58
9,カメックス,みず,NULL,79,83,100,85,105,78
 比較ファイル2.csv
図鑑番号,ポケモン名,タイプ1,タイプ2,HP,こうげき,ぼうぎょ,とくこう,とくぼう,すばやさ
1,フシギダネ,くさ,どく,45,49,49,65,65,45
2,フシギソウ,くさ,どく,60,62,63,80,80,60
3,フシギバナ,くさ,どく,80,82,82,100,100,80
4,ヒトカゲ,ほのお,NULL,39,52,43,60,50,65
5,リザード,ほのお,NULL,58,64,58,80,65,80
6,リザードン,ほのお,ひこう,78,84,78,109,85,100
7,ゼニガメ,みず,NULL,44,48,65,50,64,43
8,カメール,みず,NULL,59,63,80,65,80,58
9,カメックス,みず,あく,79,83,100,85,105,78

カメックスがあくタイプでないのは分かると思いますが、

フシギバナの防御種族値はかなりのポケモンガチ勢じゃないと分からないと思います。

余談はここまでで、今回のプログラムでは、フシギバナの行とカメックスの行が出力されるのを目的とします。

今回作成したプログラム

早速作成したソースコードをみてみましょう!!

 出力結果
3,フシギバナ,くさ,どく,80,82,83,100,100,80
9,カメックス,みず,NULL,79,83,100,85,105,78

異なる値がある行のみ出力ができています!!

プログラムの解説

上記のプログラムの重要な部分を解説します。

step
1
読み込む箇所

ファイルの読み込み方はReadStreamを使った方法など色々ありますが、

私はReadLinesメソッドを使用して読み込むのが一番好きです。

読み込んだデータをIEnumerable<T>型で返してくれるので、そのままLinqを使用できるんですよね!

それぞれ読み込んだデータをIEnumerable<T>型で持っています。

ファイルの読み込み方法は下記の記事にまとめています。

こちらもCHECK

C# ファイルの読み込み方法を3つ紹介します。読み込み方法で一番良いのはReadLinesメソッドの理由

今回のテーマContents1 今回のテーマ2 ファイルの内容を1行ずつ読み込む方法3 ファイルの内容を1度に読み込む方法4 ファイルの内容を読み込む方法(Linqを使用するのに適した読み込み方)5 ...

続きを見る

step
2
データの整形とリスト化

データの整形とリスト化をしています。今回の目的としてはSplitメソッドで分割しなくても良いのですが、

分割して配列にしてしまった方が後々使いやすいので、配列にしています。

この処理でリストには下記のようにデータが入っています。

配列0番目 配列1番目 配列2番目 配列3番目
string[] 1 フシギダネ くさ どく
string[] 2 フシギソウ くさ どく
string[] 3 フシギバナ くさ どく
string[] 4 ヒトカゲ ほのお NULL
string[] 5 リザード ほのお NULL
string[] 6 リザードン ほのお ひこう

step
3
2つのデータの比較と出力

最後に整形したデータ同士で比較を行っています。for文でリストの行を1つずつ見ています。

LinqのSequenceEqualメソッドを使用すると、各配列の中身がそれぞれ一致しているか確認してくれます。

比較をして値が違う行のみ各データを結合して、出力しています。

SequenceEqualメソッドについてはこちら

こちらもCHECK

C# Linqは便利なので使い方を覚えよう。Count、SequenceEqual、FirstOrDefault、LastOrDefaultメソッドを解説します。

今回のテーマContents1 今回のテーマ2 LinqのCount、SequenceEqual、FirstOrDefaultについて2.1 Count2.2 SequenceEqual2.3 Fir ...

続きを見る

まとめ

今回は2つのCSVファイルを読み込んで、比較を行うプログラムを紹介しました。

ココがポイント

Csvファイルの各データを配列にしておくことで、柔軟に対応できるようになるのでオススメです。

今回は行の比較をするプログラムでしたが、配列に整形しておくことで各要素で比較することも可能です!!

それでは、最後まで読んで頂き、ありがとうございました。お役に立てていれば光栄です!!

KappaChan
最後まで読んでくれてありがとうかっぱ!!!

ファイルについての記事はこちら

新しいサイト作りました。アニメのまとめサイトです。

レインボーリアルタイムTwitter(アニメ版)


映画ドキュメンタリ版のブログはこちら
レインボーまとめサイト(映画ドキュメンタリー版)
ポケモンまとめブログはこちら
レインボーまとめサイト(ポケモン版)

-Linq, ファイルの読み込み書き込み

Ads Blocker Image Powered by Code Help Pro

広告ブロックを検出しました。

ブラウザの広告機能を使用して広告をブロックしていることが検出されました。
ブラウザの広告ブロッカーを無効にし、「更新」をクリックしてください。

Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock