var result = myList.Where(t => t.ReportDate >= StartDate)
.Where(t => t.ReportDate <= EndDate)
我試圖讓串列中的所有物件(myList)這就是有日期(ReportDate之間)StartDate和EndDate...我用上面的代碼,它的作業很好,但是當StartDate和EndDate都等于它回傳null。任何人都可以幫助...提前致謝。
uj5u.com熱心網友回復:
看來,您想排除 時間分量:
var result = myList
.Where(t => t.ReportDate.Date >= StartDate.Date &&
t.ReportDate.Date <= EndDate.Date);
如果這是你的話,那么當StartDate.Date == EndDate.Date你將得到result與ReportDate.Date == StartDate.Date
請注意,通常排除以下內容更方便EndDate:
var result = myList
.Where(t => t.ReportDate.Date >= StartDate.Date &&
t.ReportDate.Date < EndDate.Date);
例如,如果我們想要 2021 年,我們可以把1.1.2021 .. 1.1.2022而不是1.1.2021 .. 31.12.2021
uj5u.com熱心網友回復:
我已盡力采納您的意見。這將忽略日期的時間部分,并將與空 ReportDates 一起使用。
DateTime now = DateTime.Now;
// Get the Date part for the variables before the linq query
DateTime startDate = now.Date;
DateTime endDate = now.Date;
List<Report> myList = new List<Report> { new Report(1, now), new Report(2, null), new Report(3, now.AddDays(1)) };
// You are not required to make multiple Where calls
// Check that ReportDate has a value before comparison
// Get the Date part for the comparisons
var reports = myList.Where(t => t.ReportDate.HasValue
&& t.ReportDate.Value.Date >= startDate
&& t.ReportDate.Value.Date <= endDate);
foreach (var report in reports)
{
Console.WriteLine($"Report {report.ReportId}");
}
報告一
uj5u.com熱心網友回復:
以下示例代碼可能會讓您走上正軌
using System;
using System.Collections.Generic;
namespace Test
{
class Program
{
static void Main()
{
List<DateTime> dateTimeList = new List<DateTime>
{
new DateTime(1946, 04, 11),
new DateTime(1948, 04, 22),
new DateTime(1975, 01, 23),
new DateTime(1975, 01, 23),
new DateTime(1977, 07, 07),
new DateTime(1988, 05, 02),
};
DateTime beginDate = new DateTime(1970, 01, 01);
DateTime endDate = new DateTime(1979, 12, 31);
List<DateTime> result = dateTimeList.FindAll(x => x >= beginDate && x <= endDate);
foreach (DateTime dateTime in result)
Console.WriteLine(dateTime);
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/380495.html
下一篇:前端無法接受后端路由回傳的頁面
