我有2所列出,allCharges
和selectedCharges
,其中在每個selectedCharges
項包含在allCharges
。C#while循環重寫範圍的變量隨每次迭代
我想創建第三個列表(稱爲charges
),它是所有費用的副本,但是如果費用在選定費用列表中,則每個項目的布爾屬性設置爲「真」,其布爾屬性爲「選定」。
這很好,如果我只做一次;但是,我試圖執行相同的操作五次,每次將「費用」保存到我的「typeSettingsList」時重寫「費用」。
IList<TypeSettings> typeSettingsList = new List<TypeSettings>();
var typeId = 1;
while (typeId < 6)
{
var links = _linkChargeTypeRepo.Query().Where(l => l.TypeId == typeId);
var allCharges = _chargeRepo.GetAll().ToList();
var selectedCharges = links.Select(l => l.ChargeType).ToList();
selectedCharges.ForEach(c => c.Selected = true);
var nonSelectedCharges = allCharges.Except(selectedCharges).ToList();
nonSelectedCharges.ForEach(c => c.Selected = false);
var charges = nonSelectedCharges.Concat(selectedCharges).ToList();
var settingsWithType = new TypeSettings
{
Type = _typeRepo.Get(typeId),
Charges = charges
};
typeSettingsList.Add(settingsWithType);
typeId++;
}
return settingsWithType;
我的問題是,在我的typeSettingsList每個「收費」對象結束了對象,它是在最後一次迭代產生的費用覆蓋掉了,即使變量在while循環內聲明的(因此應每次迭代都有一個新的對象引用)。
這只是一個錯誤的理解,如何在while循環內的變量應該工作?
我怎樣才能讓我的「費用」列表不會覆蓋每次迭代?
selectedCharges是一個列表變量,TypeSettings(我猜)是不是值類型。每個列表都是新的,但它包含的對象是_reused_ – 2014-10-16 16:08:02
@AdrianoRepetti我不知道我明白你在說什麼。我的類型設置對象是包含類型和列表的對象。有沒有理由不這樣做? –
MitchVz
2014-10-16 16:26:04