C#のLinqのメソッド一覧 ファイルの読み込み書き込み

【C# Linq sharp】CSVを読み込み行ごとに比較する方法

ChatGPTのAPIを使わずに自動化することが可能です。
下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。

今回のテーマ

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

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

ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 今回のテーマ ...

続きを見る

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# sharp Linq】Count、SequenceEqual、FirstOrDefault、LastOrDefaultメソッドを解説します。

ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 今回のテーマ ...

続きを見る

まとめ

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

ココがポイント

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

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

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

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

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

-C#のLinqのメソッド一覧, ファイルの読み込み書き込み

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock