DBから取得したデータを格納するために使用するカスタムクラス(NTDropDownおよび)をいくつか作成しました。のリストと2つNTBaseFreightのリストを初期化します。NTBaseFreightNTDropDown
貨物リストに貨物を追加するために正常に使用できますList.Addが、コードをデバッグすると、2つのドロップダウンリストには1つしか含まれずNTDropDown、常に同じ値になりますNTDropDown(これは参照の問題であると想定していますが、何をしていますか?間違い)?
例を挙げると、2行目で、carrierとcarrier_labelwere"001", "MyTruckingCompany"およびifステートメントのifステートメントにブレークを入れるとfrt_carriers、frt_carriersとfrt_modesの両方のリストに1つの項目のみが含まれ、値は"001", "MyTruckingCompany"...と同じ値になりNTDropDownます。
コード:
List<NTDropDown> frt_carriers = new List<NTDropDown>();
List<NTDropDown> frt_modes = new List<NTDropDown>();
List<NTBaseFreight> freights = new List<NTBaseFreight>();
NTDropDown tempDropDown = new NTDropDown();
NTBaseFreight tempFreight = new NTBaseFreight();
//....Code to grab data from the DB...removed
while (myReader.Read())
{
tempFreight = readBaseFreight((IDataRecord)myReader);
//check if the carrier and mode are in the dropdown list (add them if not)
tempDropDown.value = tempFreight.carrier;
tempDropDown.label = tempFreight.carrier_label;
if (!frt_carriers.Contains(tempDropDown)) frt_carriers.Add(tempDropDown);
tempDropDown.value = tempFreight.mode;
tempDropDown.label = tempFreight.mode_label;
if (!frt_modes.Contains(tempDropDown)) frt_modes.Add(tempDropDown);
//Add the freight to the list
freights.Add(tempFreight);
}