一个单位可以有很多与之相关的价格(不同的价格适用于一年中的不同时间)。
单位“A”的价格为3季(3种不同价格)和单位“B”& “C”也有3个赛季和pices。现在我需要复制startDate和endDate表格单元“A”所有3个季节的单位“B”& “C”但保持单位“B”的价格& “C”只改变startDate和endDate。使用什么以及如何使用IList或IEnumerable其他内容?我想太多次了,如果和foreach ......
我试试这个......但是必须更好地解决任何问题吗?
//select A Unit (Master unit)
_masterUnit = Core.Model.Unit.GetById(Convert.ToInt32(ddlAllUnits.SelectedValue));
IList<Core.Model.Unit> allUnits = Core.Model.Unit.GetUnits();
IList<Price> _masterPrices = Price.GetPricesOfUnit(_masterUnit.UnitId);
int mp;
int xp;
foreach (Core.Model.Unit unit in allUnits)
{
if ((unit.UnitId != _masterUnit.UnitId) && (_masterPrices.Count == unit.AllUnitPrices.Count))
{
mp = 1;
xp = 1;
IList<Price> _unitPrices = Price.GetPricesOfUnit(unit.UnitId);
foreach (Price _pricex in _masterPrices)
{
xp = 1;
foreach (Price price in _unitPrices)
{
if (mp == xp)
{
Price newPrice = null;
newPrice = Price.GetById(price.PriceId);
newPrice.UnitId = price.UnitId;
newPrice.UnitPrice = price.UnitPrice;
newPrice.StartDate = _pricex.StartDate;
newPrice.EndDate = _pricex.EndDate;
newPrice.ExtraBed = price.ExtraBed;
newPrice.Save();
}xp++;
}
mp++;
}
}
}
答案 0 :(得分:0)
首先,你有一些令人困惑的代码。
其次,我认为我已经成功地简化了逻辑。
//gets unit A
_masterUnit = Core.Model.Unit.GetById(Convert.ToInt32(ddlAllUnits.SelectedValue));
//gets prices for A
IList<Price> _masterPrices = Price.GetPricesOfUnit(_masterUnit.UnitId);
//gets all Units
IList<Unit> allUnits = Core.Model.Unit.GetUnits();
foreach(Unit unit in allUnits){
//gets units price
var unitPrices = Price.GetPricesOfUnit(_masterUnit.UnitId);
for(int i = 0; i < unitPrices.length(); i++){
//replaces start, end date with that of master unit
unitPrices[i].StartDate = _masterPrices[i].StartDate;
unitPrices[i].EndDate= _masterPrices[i].EndDate;
unitPrices[i].Save();
}
}
答案 1 :(得分:0)
那个数据库设计很奇怪。
听起来数据搞砸了?
为什么需要将StartDate和EndDate设置为其他单位的那个?
无论哪种方式......执行此操作的步骤都是......
你设计过这个吗?您需要重新考虑设计。我会添加一个新表,PriceBlock(int PriceBlock,date StartDate,date EndDate),每个Price都将映射到PriceBlock。