お世話になります。
標記のとおり、同じオブジェクト(_ZokuseiDto )の1件目と2件目以降の各プロパティの値が同じかどうかを比較をしたいのですが、これを実行するとオブジェクト(_ZokuseiDto )の中で定義している別のIList型のオブジェクトのプロパティのCount?のところで値が相違してしまいます。
どう対処すればよいのか見当がつきません。
どなたかご教授おねがいします。
C#
1//クラスです。長すぎるので一部抜粋です。 2 3 [Serializable] 4 5 class EigyoGyoumuDto 6 { 7 /// <summary> 8 /// 共通ロジック 9 /// </summary> 10 public CommonLogic cmnLc; 11 12 /// <summary> 13 /// 担当者マスタ辞書 14 /// </summary> 15 public IDictionary<int?, MTantouDto> _MTantouDic { set; get; } 16 17 /// <summary> 18 /// 得意先マスタ辞書 19 /// </summary> 20 public IDictionary<String, MTokuisakiDto> _MTokuisakiDic { set; get; } 21 22 /// <summary> 23 /// 見積りヘッダ 24 /// </summary> 25 public TMitsumoriHeadDto _TMitsumoriHeadDto { set; get; } 26 27 /// <summary> 28 /// 見積りヘッダ属性 29 /// </summary> 30 public TMitsumoriHeadZokuseiDto _TMitsumoriHeadZokuseiDto { set; get; } 31 32 /// <summary> 33 /// 見積り明細 34 /// </summary> 35 public TMitsumoriDetailDto _TMitsumoriDetailDto { set; get; } 36 37 /// <summary> 38 /// 見積り明細属性 39 /// </summary> 40 public TMitsumoriDetailZokuseiDto _TMitsumoriDetailZokuseiDto { set; get; } 41 42 /// <summary> 43 /// 受注属性 44 /// </summary> 45 public TJuchuZokuseiDto _TJuchuZokuseiDto { set; get; } 46 47 /// <summary> 48 /// 変換前ファイル名 49 /// </summary> 50 public String BeforeConversionFileName { set; get; } 51 52 /// <summary> 53 /// 変換前ファイルパス名 54 /// </summary> 55 public String BeforeConversionFilePath { set; get; } 56 57 58 59 /// <summary> 60 /// 変換後ファイル名 61 /// </summary> 62 public String AfterConversionFileName 63 { 64 get 65 { 66 if (String.IsNullOrEmpty(BeforeConversionFileName) && _TMitsumoriDetailZokuseiDto == null) 67 { 68 return String.Empty; 69 } 70 71 String MitFileNm = String.Empty; 72 //コンボボックスを選択している場合 73 if (!String.IsNullOrEmpty(BeforeConversionFileName)) 74 { 75 //変換前ファイル名の拡張子を取得 76 String Extension = Path.GetExtension(BeforeConversionFileName); 77 MitFileNm = MitCode + "-" + GenericUtil.ZeroPadding(GenericUtil.StringTryparse2(_TMitsumoriDetailDto.MitSeq), 2) + Extension; 78 79 //既存のファイル名取得 80 if (_TMitsumoriDetailZokuseiDto == null) 81 { 82 TMitsumoriDetailZokuseiDtoNewInstance(); 83 84 } 85 _TMitsumoriDetailZokuseiDto.MitFileNm = MitFileNm; 86 87 } 88 89 90 return _TMitsumoriDetailZokuseiDto.MitFileNm; 91 92 } 93 94 } 95 96 /// <summary> 97 /// 計算書発行日(属性情報) 98 /// </summary> 99 public DateTime? MitDate 100 { 101 set 102 { 103 if (_TMitsumoriHeadZokuseiDto == null) 104 { 105 TMitsumoriHeadZokuseiDtoNewInstance(); 106 } 107 108 _TMitsumoriHeadZokuseiDto.MitDate = value; 109 110 } 111 get 112 { 113 if (_TMitsumoriHeadZokuseiDto == null) 114 { 115 return null; 116 } 117 return _TMitsumoriHeadZokuseiDto.MitDate; 118 } 119 120 } 121 122 /// <summary> 123 /// 御見積書発行日(属性情報) 124 /// </summary> 125 public DateTime? MitMitsumorishoDate 126 { 127 set 128 { 129 if (_TMitsumoriHeadZokuseiDto == null) 130 { 131 TMitsumoriHeadZokuseiDtoNewInstance(); 132 } 133 134 _TMitsumoriHeadZokuseiDto.MitMitsumorishoDate = value; 135 136 } 137 get 138 { 139 if (_TMitsumoriHeadZokuseiDto == null) 140 { 141 return null; 142 } 143 return _TMitsumoriHeadZokuseiDto.MitMitsumorishoDate; 144 } 145 146 } 147 148 149 /// <summary> 150 /// 備考3 151 /// </summary> 152 public String MitEigyoBikou3 153 { 154 155 set 156 { 157 TMitsumoriDetailZokuseiDtoNewInstance(); 158 159 _TMitsumoriDetailZokuseiDto.MitEigyoBikou3 = value; 160 } 161 162 get 163 { 164 if (_TMitsumoriDetailZokuseiDto == null) 165 { 166 return String.Empty; 167 } 168 169 return _TMitsumoriDetailZokuseiDto.MitEigyoBikou3; 170 171 172 } 173 174 } 175 } 176 177 178 179 180 181 182 183 //2件目以降のデータが1件目と同じかチェックする場合 184 if (ChkDataSameCheck.Checked) 185 { 186 187 IList<EigyoGyoumuDto> _EigyoGyoumuDtoList = new List<EigyoGyoumuDto>(); 188 _EigyoGyoumuDtoList = DataList; 189 //比較用に1件目を退避しておく 190 ZokuseiDto First_ZokuseiDto = _EigyoGyoumuDtoList[0]._ZokuseiDto; 191 PropertyInfo[] infoArrayOfFirst = First_ZokuseiDto.GetType().GetProperties(); 192 193 foreach (EigyoGyoumuDto dto in _EigyoGyoumuDtoList) 194 { 195 196 if (dto._ZokuseiDto != null) 197 { 198 199 PropertyInfo[] infoArray = dto._ZokuseiDto.GetType().GetProperties(); 200 int idx = 0; 201 // プロパティ情報出力をループで回す 202 foreach (PropertyInfo infoFirst in infoArrayOfFirst) 203 { 204 205 MethodInfo getAccessor = infoFirst.GetMethod; 206 207 Object first = infoFirst.GetValue(First_ZokuseiDto); 208 Object data = infoArray[idx].GetValue(dto._ZokuseiDto); 209 if (first == null || data == null) 210 { 211 212 if ((first != null && data == null) || (first == null && data != null)) 213 { 214 Message_Warn("2件目以降のデータが1件目と違います。"); 215 return; 216 } 217 218 } 219 else 220 { 221 if (!first.Equals(data)) 222 { 223 Message_Warn("2件目以降のデータが1件目と違います。"); 224 return; 225 } 226 } 227 228 idx++; 229 } 230 231 } 232 } 233 }
回答2件
あなたの回答
tips
プレビュー