LINQ语句使用datetime查找最大金额天数

时间:2014-07-03 21:31:51

标签: c# sql linq

我正在尝试创建一个LINQ语句,它将为我提供开始日期和结束日期之间的最大天数。

所以我有这个声明可以解决所有已解决的问题:

var issuesClosed = whseTasks.Where(t => t.CompDate != null);

从这个问题列表中,我想找到每个记录与给定issue.StartDate和issue.EndDate之间的最大天数,并选择具有最大天数的记录。

EX:

1 | issue.StartDate = 7/3/2014 | issue.EndDate = 7/5/2014 = 2天

2 | issue.StartDate = 7/1/2014 | issue.EndDate = 7/5/2014 = 4天

3 | issue.StartDate = 7/1/2014 | issue.EndDate = 7/6/2014 = 5天

我想选择记录3,因为它的天数最多。

2 个答案:

答案 0 :(得分:3)

var issues = new[]
{
    new Issue { StartDate = DateTime.Now, EndDate = DateTime.Now.AddDays(4) },
    new Issue { StartDate = DateTime.Now, EndDate = DateTime.Now.AddDays(12) },
    new Issue { StartDate = DateTime.Now, EndDate = DateTime.Now.AddDays(1) }
};

var theIssue =
    issues.OrderBy(issue => (issue.StartDate - issue.EndDate).TotalDays)
          .First();

答案 1 :(得分:1)

选择两个日期之间差异最大的记录应该完成工作

whseTasks.Where(t => t.CompDate != null)
         .Max(x => x.EndDate - x.StartDate);