ASP.NET Linq如何添加条件从/到日期过滤器

时间:2012-05-08 02:55:28

标签: asp.net sql linq

基本上我想要实现的是:

  • 如果输入日期,则日期> =从日期
  • 如果输入日期,则输入日期< =到日期
  • 如果输入两者,则日期> =从日期和日期< =到日期

因此,在我的页面上,我有两个日期框,用户可以从中选择日期和日期。问题是当我输入例如下面的内容时,我得到的项目实际上的日期大于05/04/2012,这不应该发生。我的约会似乎有效但过时的过滤器永远不会起作用,因为它始终返回的结果大于到目前为止。

if (finalApprovedFromDate != DateTime.MinValue)
{
    filteredClaims = filteredClaims.Where(cl => cl.claimStatus.Any(cs => cs.createdDate >= DateTime.Parse("05/03/2012"))).ToList();
}
if (finalApprovedToDate != DateTime.MinValue)
{
    filteredClaims = filteredClaims.Where(cl => cl.claimStatus.Any(cs => cs.createdDate <= DateTime.Parse("05/04/2012"))).ToList();
}

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

每条评论对查询的修改。这将仅返回声明状态为statusId 5且在5/3和5/4之间的声明。

if (finalApprovedFromDate != DateTime.MinValue)
{
    filteredClaims = filteredClaims.Where(
        cl => cl.claimStatus.Any(
            cs => cs.statusId == 5 cs.createdDate >= DateTime.Parse("05/03/2012")
        )
    ).ToList();
}
if (finalApprovedToDate != DateTime.MinValue)
{
    filteredClaims = filteredClaims.Where(
        cl => cl.claimStatus.Any(
            cs => cs.statusId == 5 && cs.createdDate <= DateTime.Parse("05/04/2012")
        )
    ).ToList();
}