c#lambda获取两个日期之间的任务列表

时间:2018-03-07 23:58:33

标签: c#

我的大脑现在正在沸腾。

我有一个任务列表,我正在为搜索过滤器编程,用户应该能够使用日期过滤结果,让我们说我创建了一个可以在03-03之间获取的任务-2018和23-03-2018,我的问题现在是lambda表达式,我将尽力解释它:

在我的任务模型中,我有4个不同的日期时间对象,我可以使用

  • AvailableDate:取件日期开始
  • PickupDate:取件日期结束
  • RequestDate:交货日期开始
  • DeliveryDateTo:交货日期结束

我的问题是,如果用户选择过滤搜索结果,请执行以下操作:

用户使用日期选择器选择日期,让我们说用户想要查看在01-03-2018和14-03-2018之间可以提取的所有结果

创建的任务应该是可见的,因为用户选择一个日期范围,其中一个日期在拾取范围之间,但它不能正常工作,我现在将发布我的代码:< / p>

string TempPickupDateFrom = PickupDateFrom.ToString();
string TempPickupDateTo = PickupDateTo.ToString();
DateTime TempNewPickupDateFrom = DateTime.ParseExact(TempPickupDateFrom, "MM-dd-yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
DateTime TempNewPickupDateTo = DateTime.ParseExact(TempPickupDateTo, "MM-dd-yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
string ConvertNewPickupDateFrom = TempNewPickupDateFrom.ToString("dd-MM-yyyy");
DateTime NewPickupDateFrom = DateTime.ParseExact(ConvertNewPickupDateFrom, "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture);
string ConvertNewPickupDateTo = TempNewPickupDateTo.ToString("dd-MM-yyyy");
DateTime NewPickupDateTo = DateTime.ParseExact(ConvertNewPickupDateTo, "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture);
tasks = tasks.Where(m => m.AvailableDate.GetValueOrDefault() <= NewPickupDateFrom || m.PickUpDate.GetValueOrDefault() >= NewPickupDateTo).ToList();

希望这对某人有任何意义,我对此感到疯狂......

2 个答案:

答案 0 :(得分:0)

  

“假设用户希望查看01-03-2018和14-03-2018之间可以提取的所有结果”

从下面的评论中,您可能会想要选择AvailableDate或PickupDate介于PickupDateFrom(01-03-2018)PickupDateTo(14-03-2018)之间的所有任务:

var availableTasks = tasks.Where(task => 
    (task.AvailableDate.GetValueOrDefault() >= PickupDateFrom && 
    task.AvailableDate.GetValueOrDefault() <= PickupDateTo) || 
    (task.PickupDate.GetValueOrDefault() <= PickupDateFrom &&
    task.PickupDate.GetValueOrDefault() <= PickupDateTo).ToList();

答案 1 :(得分:0)

很抱歉使用你的时间,但是我解决了我的解决方案后更加头疼:

tasks = tasks.Where(m => m.AvailableDate.GetValueOrDefault() >= NewPickupDateFrom && m.PickUpDate.GetValueOrDefault() <= NewPickupDateTo || m.AvailableDate.GetValueOrDefault() <= NewPickupDateFrom && m.PickUpDate.GetValueOrDefault() >= NewPickupDateTo || m.AvailableDate.GetValueOrDefault() <= NewPickupDateTo && m.PickUpDate.GetValueOrDefault() >= NewPickupDateFrom).ToList();