1

我有一个新的零售项目,包括 mvc、c# 和 entityframework。我在我的项目中使用全日历。现在我的问题是;

首先,我整天都在创建一个新活动。没问题。但有些日子包含不同的事件。我只想更改特殊日期的时间间隔。我已经创建了 Fullcalendar 模型。

public class FullCalendar
    {
        public int id { get; set; }
        public string title { get; set; }
        public long start { get; set; }
        public long end { get; set; }
        public string url { get; set; }
        public decimal price { get; set; }


    }

例如,我的数据库 Rates 表中的一般日期事件;

id  RateForDate    RateForWeek    RateForMonth    StartDate     EndDate   IsAllDay
1   180,00            150,00    100,00        2013-04-30    2020-12-31  True

费率表中的特殊日期;

id  RateForDate       RateForWeek   RateForMonth  StartDate     EndDate   IsAllDay
2   100,00            90,00     80,00         2013-05-05    2013-05-05  False
3   180,00            150,00    100,00        2013-05-06    2013-05-10  False
4   180,00            150,00    100,00        2013-06-05    2013-06-10  False
5   230,00            200,00    180,00        2013-07-12    2013-07-15  False

但在一般日期事件中 ,当特殊日期插入包括一般日期事件时,一般日期事件不得更改。只是改变特殊的日子。其他日期必须是一般日期事件。

新的 Rates 表必须是这样的;

id  RateForDate       RateForWeek   RateForMonth  StartDate     EndDate   IsAllDay
1   180,00            150,00    100,00        2013-04-30    2013-05-04  False
2   100,00            90,00     80,00         2013-05-05    2013-05-05  False
3   180,00            150,00    100,00        2013-05-06    2013-06-04  False
4   180,00            150,00    100,00        2013-06-05    2013-06-10  False
5   180,00            150,00    100,00        2013-06-11    2013-07-11  False
6   230,00            200,00    180,00        2013-07-12    2013-07-15  False
7   180,00            150,00    100,00        2013-07-16    2020-05-05  False     

我希望我能说出我的问题。我怎样才能为这个问题创建算法?何可以为这个问题创建foreach?感谢您的帮助。我很抱歉英语。

4

1 回答 1

0

如果您想获得一段时间(例如 30 天)的费率,您可以执行以下操作:

var startDate = new DateTime(y,m,d);
var rates = new List<FullCalendar>();
for(var i = 0; i < 30; i++)
{
    var date = startDate.AddDays(i);
    rates.Add(GetSpecialRate(date) ?? GetStandardRate(date));
}

whereGetSpecialRateGetStandardRate是您获得费率的两种方法。这两种方法的主要部分是

rates.Where(r => r.StartDate >= date && r.EndDate < date)

rates是标准费率或特殊费率的集合。

旁注:不要使用longfor DateTime,这是一个调试地狱。转换DateTimelong必要的时候,例如 Json 序列化。

于 2013-05-12T19:01:23.663 回答