EF增值税表计算特定日期的增值税税率

本文关键字:增值税 日期 税率 计算 EF | 更新日期: 2023-09-27 18:04:33


我正在使用实体框架在C#中开发一个MVC3应用程序。我有一个增值税税率表,其中有增值税税率、开始日期和结束日期字段。开始日期和结束日期可以为空,表示这是历史利率或正在进行的利率。我想弄清楚的是,如何创建一个单独的查询,将这些null考虑在内,以便在我通过一个日期时给我增值税税率。(nb示例显示英国日期格式dd/mm/yyyy

+--------------+-------------+----------+|开始日期|结束日期|增值税税率|+--------------+-------------+----------+|Null |01/01/2011|19|+--------------+-------------+----------+|2011年1月2日| 2011年8月8日| 20|+--------------+-------------+----------+|2011年8月9日|无效|21|+--------------+-------------+----------+

感谢您抽出时间

EF增值税表计算特定日期的增值税税率

如果您使用EF,您可以执行以下操作:

DateTime first = DateTime.Parse("01-01-1900");
DateTime last = DateTime.Parse("01-01-2100");
var rate = db.VatRates.Where(
    vr => input > (vr.StartDate ?? first) && input < (vr.EndDate ?? last)).First().Rate;

根据下面的评论,如果没有EndDate列,请尝试以下操作:

DateTime start = DateTime.Parse("01-01-1900");
var rate = db.VatRates.Where(vr => input > (vr.StartDate ?? start))
    .OrderByDescending(vr => vr.StartDate).First().Rate;

适用于我:(

假设您通过@Date

SELECT      VATRate 
FROM        VATRateTable
WHERE       @Date
BETWEEN     ISNULL(StartDate, '1900-01-01') AND ISNULL(EndDate, '2100-01-01')