前提・実現したいこと
c#にてif文を使って行ごとに列を比較して判別させるような仕組みを作っているのですが、どうもうまくいきません。
ご教示お願いします。
発生している問題・エラーメッセージ
エラーメッセージは出ていません。 5行目に”要修正”しかでてこない、 これは1行目が”要修正”に値するものだったからだと思われる。 if (dataGridView1[2,i].Value == dataGridView1[2,i].Value) と書き換えれば、5行目は全て”OK”だった。
該当のソースコード
C#
1for (int i = 0; i < files_1.Count();i++ ) 2 { 3 if (dataGridView1[2,i].Value == dataGridView1[3,i].Value) 4 { 5 dataGridView1[4,i].Value = "OK"; 6 } 7 else 8 { 9 dataGridView1[4,i].Value = "要修正"; 10 } 11 }
試したこと
if文のところをif(files_1.ElementAt(i).ToString()==files_2.ElementAt(i).ToString())としてみてもダメでした。
valueのところをToString()にしてもダメでした。
補足情報(FW/ツールのバージョンなど)
3列目と4列目は共にDateTimeが入っています。
file_1は配列変数です。string型が入っています。
具体的にどのような値を比較しているのか示してください。
すみません。補足情報にDateTimeと書いていれば大丈夫かと思っていました。具体的には日時が入っています。
"本当に"値は同じですか? "OK"の所にブレークポイント打って中身見てください
今確認してきましたが、同じ値を入れてもやはりelseに行ってしまいます。
"OK"がでないので、"OK"にブレークポイントを打ってもダメですね。"要修正"のところでみるべきです。また、解決しない場合には、その値を追加情報として追記してください。
ごめんなさい指示を間違えました。ですが聞きたいのはそうではなく、"同じ値を入れても"の方法がこちらには分からないので、同じ値じゃないんだろうという事しか分かりません。同じ値ならOKがでるので。
値は”2018/03/06 9:23:23”を入れています。あとこれはファイルのタイムスタンプから抽出しています。
具体的には、CSVから変換してDateTimeだと思い込んでいるだけでStringのままで、最後にスペースがついていたり付いていなかったりしている可能性があったりします。このコードだけみても、データが同じじゃないからOKが出ないとしか言いようがないという事です。
正確に言うとだめなのだと思いますが、このプログラムに関しては、StringであろうとDateTimeであろうと値がまったく同じであるか否かを知りたいのですが。片方だけが違うデータになっている可能性があるということでしょうか?
dataGridView1[2,i].Value.ToString() == dataGridView1[3,i].Value.ToString() でOKになれば同じです。(DateTimeのToStringはフォーマットがあるので注意)
回答2件
あなたの回答
tips
プレビュー