c# - 如何每天影响变量 C# asp.net

标签 c# asp.net

我有一个包含一些价格的数据库。例如我有牛奶 = 1 欧元。 我希望价格不会被修改超过或低于 10%。所以在这种情况下,您只能将价格设置在 0.90 或 1.10 之间。这很容易做到,但是,当价格被修改时,用户可以立即再次修改它。 (如果他将它设置为 0.9,那么他可以将它设置在 0.81 和 0.99 之间,依此类推......)所以我想在变量中影响价格,例如每天上午 9 点,所以一天之内它不能变化大于或小于 10%。

DataClassesDataContext db = new DataClassesDataContext();

List<ARTICLE> article = db.ARTICLE.ToList();

for (int i = 0; i < article.Count; i++)
{
    switch (article[i].Name)
    {
        case "Milk":
            if (decimal.Parse(Milk.Text, CultureInfo.InvariantCulture) <= 
                (article[i].Price/ 10) * 11 && decimal.Parse(Milk.Text,
                 CultureInfo.InvariantCulture) >= (article[i].Price/ 10) * 9)
            {
                if (decimal.Parse(Milk.Text, CultureInfo.InvariantCulture) != article[i].Price)
                {
                    article[i].Price= decimal.Parse(Milk.Text, CultureInfo.InvariantCulture);
                }
            }
            break;
        case "Other thing":
            //... etc
     }
}

最佳答案

所以你想:

  • 保存每一天的起始价格
  • 允许用户在 N% 的阈值内更改当天的价格
  • 允许用户每天多次更改价格(修复更正,或者增加或减少价格,只要总差为 < N%)

然后在更改每日价格时,检查它与基本价格的差异是否不超过 N%。

要解决这个问题,您需要使用三列:DailyPriceCurrentPricePriceModified。然后在编辑价格时:

if (record.PriceModified.Date != DateTime.Now.Date)
{
    // First edit for today. 
    if (PriceWithinChangeThreshold(formData.NewPrice, record.CurrentPrice))
    {       
        // Save the old price as the new start price for today
        record.DailyPrice = record.CurrentPrice;
        record.CurrentPrice = formData.NewPrice;
        record.PriceModified = DateTime.Now;
    }
}
else
{
    // This price has already been edited today.
    if (PriceWithinChangeThreshold(formData.NewPrice, record.DailyPrice))
    {
        // But it's within the threshold for today
        record.CurrentPrice = formData.NewPrice;
        record.PriceModified = DateTime.Now;
    }   
}

但正如评论中所讨论的,将价格保存为小数列通常不是一个好主意。想想(历史)报告、发票、税收、货币等等:“产品价格”方式不仅仅是一个数字。所以我建议以完全不同的方式存储您的价格。请参阅 mjwlls' answer

关于c# - 如何每天影响变量 C# asp.net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44562153/

相关文章:

c# - 从文件扩展名获取 MIME 类型

c# - 该程序集由比当前加载的运行时更新的运行时构建,无法加载

c# - 一个方法如何只包含一个 NotImplementedException 并且仍然运行而不抛出?

javascript - 向用户呈现多条确认消息的最佳方式

c# - OLEDB 读取 Excel 文件不适用于 IIS asp.net C#

c# - 如何从 ASP.NET xproj 调用不安全代码

c# - 我可以通过 Linq to Sql 合并字段吗

c# - 具有属性的集合的 Xml 序列化

c# - Simple Injector Identity UserManager<AppUser, Int32> 注册错误

javascript - 如何在不重新加载页面的情况下重置文本框值