所以我只有一个CreatedDate可以使用。
我有一个计划的任务,每天午夜12点运行,并且需要获取当月同一天的所有记录(但如果CreatedDate == DateTime.Now则不行)。
我更喜欢这个在LINQ中,因为这是一个数据库调用,但我认为任何迭代逻辑都足够了。
我现在有这个,但是天数高于28时会出现问题:
var results = Context.Subscriptions.Where(
x => !(x.StartDate.Day == DateTime.Now.Day &&
x.StartDate.Month == DateTime.Now.Month &&
x.StartDate.Year == DateTime.Now.Year) &&
x.StartDate.Day == DateTime.Now.Day);
为清晰起见更新问题:
例如,记录的创建日期是2013年1月31日。此记录应每月提取一次。但由于并非所有月份都有31天,因此我的上述代码在这几个月内无效。即使那个月没有第31个月,我仍然需要每个月记录一次。
答案 0 :(得分:0)
只是想到也许您可以在运行预定任务时使用Windows服务,但在.net中还有另一种任务调度程序方式。如果要使用Windows服务,可以使用timer类来重复运行。 如果你有一个任务表,你可以有intervaldatetime,datelastrundatetime和nextjobdatetime的列。在这里,您可以检查它将运行的时间间隔,并检查要运行的作业/任务的日期时间,或者它不应该运行。
检查以获取更多信息: http://msdn.microsoft.com/en-us/magazine/cc163821.aspx
我希望它可以帮到你。