我有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