我有一个' IF'声明,但我希望条件检查我的对象的日期不低于今天的日期,但我根本无法弄清楚如何做到这一点。
代码
private List<Web.Services.Entities.Generic.Expenditure> getTransactions(int Id, int AccountId, string Identifier)
{
if (Details != null)
{
foreach (var ABC in Details.Info.ABC)
{
if (ABC.Type == "Test" && ABC.Value.Value > 0)
{
int j = 1;
if (ABC.Frequency == "Monthly")
{
j = 3;
}
for (var i = 0; i < j; i++)
{
List.Add(new Web.Services.Entities.Generic.Expenditure
{
Amount = ABC.RegularIncome.Value * -1,
Description = "Income (" + ABC.Frequency + ")",
DueDate = (DateTime)ABC.NextDate.Value.AddMonths(i)
});
}
}
}
}
}
我尝试将(DateTime)ABC.NextDate.Value
声明为VAR
,高于以下IF
,然后添加到if (ABC.Type == "ABC" && ABC.Value.Value > 0)
,但我收到以下错误:
运营商&amp;&amp;&amp; &#39;不能应用于&#39; bool&#39;类型的操作数和 &#39; System.DateTime的&#39;
我需要为上述IF
添加另一个条件,而不是替换&#39; 0&#39;因为这是在返回的内容中检查另一个值。
答案 0 :(得分:3)
使用DateTime.Now
将ABC.Value.Value
与当前日期进行比较。
if (ABC.Type == "Test" && ABC.Value.Value > DateTime.Now)
问题更新后编辑,其中包含更多必需的详细信息和更新的if语句。
System.Nullable'不包含'Date'和no的定义 延期方法'日期'接受......
您需要使用DateTime.Value来访问可为空的DateTime的Date属性。在使用Date属性之前,必须检查DateTime变量是否具有值。您可以使用.HasValue
确保您具有可为空的DateTime值。
一旦您确定您的datetime变量具有使用.HasValue
的值,您就可以安全地使用DateProperty,这样您就可以使用ABC.NextDate.Value
代替ABC.NextDate
来访问Date Property。
if (ABC.Type == "Test" && ABC.Value.Value > 0 && ABC.NextDate.HasValue && ABC.NextDate.Value.Date >= DateTime.Now.Date)
答案 1 :(得分:1)
要测试可以为空的日期,请执行以下操作:
if (dateTimeToBeTested.Value.Date >= DateTime.Now.Date)
通过使用.Date
属性,您迫使DateTime
到相关日期的午夜,因此时间差异将被忽略。
要在上面的示例中使用此功能,您可以执行以下操作:
if (ABC.Type == "Test" && ABC.Value.Value > 0 && dateTimeToBeTested.Value.Date >= DateTime.Now.Date)