我要求以15天,30天,45天的形式生成报告。 我必须将来自db的列表数据与当前date.example进行比较,如果差异是5天。它不到15,所以我应该发送到15天,如果> 15我应该发送到大于15etc.How写linq查询this.can任何一个帮助请
答案 0 :(得分:0)
我不确定只能在一个查询中进行此操作。 但是,我可以为你提出另一种解决方案。 您可以针对每种情况使用一个查询,而不是一个查询。 为了比较日期差异,您可以使用SqlFunctions类。 为此,您应该使用:
using System.Data.Objects.SqlClient;
以下是带有虚构表格和字段的5天查询:
var lstDiff5 = (from ro in dc.Commandes where
SqlFunctions.DateDiff("DD", ro.Cmd_PromisDate, DateTime.Now) <= 5
select ro).ToList();
DateDiff函数采用日期部分(DD表示天数),开始日期和结束日期。在我的情况下,开始日期是当前日期。 并持续15天:
var lstDiff15 = (from ro in dc.Commandes where
SqlFunctions.DateDiff("DD", ro.Cmd_PromisDate, DateTime.Now) > 5 &&
SqlFunctions.DateDiff("DD", ro.Cmd_PromisDate, DateTime.Now) >= 15
select ro).ToList();
您可以更改运算符&gt; et&gt; =根据您的需要。
最后,您可以使用所有列表填写报告,也可以将列表合并到新列表中,以便将报告绑定到最终列表。
答案 1 :(得分:0)
您可以在linq中使用DaysBetween函数。它将返回给定日期之间的所有日期。
例:
DateTime dt = DateTime.Today.Date.AddMonths(1);
int d = dt.DaysBetween(DateTime.Today).ToList().Count;