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

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

このブログではAffinger5を使用しています。

ブログテーマが気に入った方はコチラをクリック

今回のテーマ

こんにちは、サルモリです。

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

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

サルモリ
今回は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メソッドの理由

このブログではAffinger5を使用しています。ブログテーマが気に入った方はコチラをクリック 今回のテーマ こんばんは、サルモリです! 今回は下記のテーマについて書いていきます。 今回のテーマ ファ ...

続きを見る

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メソッドを解説します。

このブログではAffinger5を使用しています。ブログテーマが気に入った方はコチラをクリック 今回のテーマ こんばんは、サルモリです。 今回は下記の記事の続きです。 CHECK 今回のテーマ Lin ...

続きを見る

まとめ

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

ココがポイント

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

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

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

サルモリ
最後まで読んでくれてありがとう!!!

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

C#のLinqをさらに学びたい方へ

C#のLinqを理解して頂くために参考書を執筆致しました!

Linqの演習問題はこちらの参考書に載せているので、問題を解いて理解を深めたい方はこちらの参考書チェックしてください!

下記の画像をクリック!!kindleunlimitedの会員であれば無料で見れます!

⇩初心者向け      ⇩中級者向け

C#でChatGPTAPIを使ってブログ作成を自動化しませんか?

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

Ads Blocker Image Powered by Code Help Pro

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

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

Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock