###前提・実現したいこと
2次元配列numXとnumYがあります。
numXとnumYにはDBから取得したレコードの情報が要素順で格納されてます。
①DBから取得したレコード例:カラム1:所属(1 or 2) カラム2:名前 カラム3:年齢 カラム4:性別
②numXとnumYの中身
(0,0) 値"1"
(0,1) 値"田中"
(0,2) 値"28"
(0,3) 値"男"
(1,0) 値"2"
(1,1) 値"山田"
(1,2) 値"23"
(1,3) 値"女"
今回はnumXが(2,3)、numYが(0,3)とします。
なので、
numX numY
要素数 要素数
0 ー 0
1 /
2 /
ような感じで2次元配列のnumX(最新情報)とnumY(前回の情報)をFor文で回し、
numX要素数0 numY要素数0
(0,0) 値"1" = (0,0) 値"1"
(0,1) 値"田中" = (0,1) 値"岸田"
(0,2) 値"28" = (0,2) 値"28"
(0,3) 値"男" = (0,3) 値"女"
のようにnumXとnumYの要素を比べて値を比較して行きたいのですが、回したらエラーで落ちてしまいます。
どう記述すれば実現出来るのでしょうか?
ご教授をよろしくお願いします。
###発生している問題・エラーメッセージ
System.IndexOutOfRangeException: 'インデックスが配列の境界外です。'
###該当のソースコード
' マーク(文字列) Dim strMark As String = String.Empty '最新numX For x As Integer = 0 To numX.GetLength(0) - 1 '初期化処理 strMark = "" '履歴numY For y As Integer = 0 To NumY.GetLength(0) - 1 '同じ所属(1 or 2)ならば比較する If numX.GetValue(x, 0).Equals(numY.GetValue(y, 0)) Then 'カラム数分回し比較する For z As Integer = 0 To numX.GetLength(1) - 1 '同じ所属の各項目を比較し、値に差異があった場合はマークに「A」を代入する If numX.GetValue(x, z).Equals(numY.GetValue(y, z)) Then strMark = "A" Exit For End If Next End If Next y '同じ所属でなかったら「B」を代入する。 strMark = "B" Next x
###補足情報(言語/FW/ツール等のバージョンなど)
開発環境 VisualStudio2017 vb.net
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/30 00:54