在我的数据库中,我有一个包含一些订阅信息的表。我有一个 StartDate 和一个 EndDate 作为 DateTime。
我需要的是进行 Linq 查询以获取所有到期付款的行。付款应每月在他们注册的同一天(开始日期)进行,并在结束日期停止。因此,如果他们在 5 月 23 日注册,我需要在 6 月 23 日、7 月 23 日等日再次为他们开具发票。
var query = from c in db.Subscription
where c.StartDate.Value.Day == DateTime.Now.Day
// What if today is Feb. 28 and a customer registered January 31.
// What if....
我迷路了...请帮忙!
最好的, 乔恩 2H
最佳答案
处理月结转天数的一种方法是(假设您希望在奇数情况下的最后一天对它们进行计费):
var Tomorrow = DateTime.Today.AddDays(1);
var query = from c in db.Subscription
where c.EndDate.Value > DateTime.Today &&
(c.StartDate.Value.Day == DateTime.Today.Day ||
(Tomorrow.Month > DateTime.Today.Month &&
c.StartDate.Value.Day > DateTime.Today.Day))
select c;
不过,您可能希望为到期付款创建一个新表并提前计算日期。这样您就可以跟踪付款时间并让以后的生活更轻松。
关于c# - 一个月过去了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/902074/