DBから取得したデータを格納するために使用するカスタムクラス(NTDropDown
および)をいくつか作成しました。のリストと2つNTBaseFreight
のリストを初期化します。NTBaseFreight
NTDropDown
貨物リストに貨物を追加するために正常に使用できますList.Add
が、コードをデバッグすると、2つのドロップダウンリストには1つしか含まれずNTDropDown
、常に同じ値になりますNTDropDown
(これは参照の問題であると想定していますが、何をしていますか?間違い)?
例を挙げると、2行目で、carrierとcarrier_label
were"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);
}