c# - 一个月过去了吗?

标签 c# .net linq-to-sql

在我的数据库中,我有一个包含一些订阅信息的表。我有一个 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/

相关文章:

c# - 如何在不使用配置文件的情况下以编程方式添加 maxItemsInObjectGraph?

c# - 使用 LINQ 将一个对象属性列表更新为其他列表

c# - 当我模拟我的 ASP.NET MVC Controller 时,我的 ActionMethod 不返回任何 View 。为什么?

c# - .NET Process Start Process Error using credentials (句柄无效)

c# - .Net 中的字符串比较 : "+" vs "-"

c# - 使用 Linq asp.net c# 在 InsertOnSubmit() 的两个不同表中插入数据

c# - Linq to Sql 中的 ChangeConflictException

c# - 什么时候应该将操作标记为异步?

c# - NullReferenceException 在 ASP.NET MVC 5 中使用 DropDownListFor

c# - 我们可以将所有 SQL 脚本转换为 Linq-to-SQL 表达式吗?或者有任何限制吗?