我有一个表,它的日期时间存储如下
2022-02-01 17:47:50.3483971 +00:00
2022-05-11 18:47:50.3483971 +00:00
2022-05-21 14:40:50.3483971 +00:00
我正试图编写一个linq查询,将比较获得结果的日期,但我只想通过日期,例如从2022/02/01获取记录
所以我试过
var fdate= query.filteredDate.LocalDateTime.ToShortDateString(); // this gets the date the user passes in.
问题出现在where子句当我尝试这个
filteredResult.Where(x=> fdate >= DateTime.Parse(x.storeddate.LocalDateTime.ToShortDateString()))
然后出错,说不能应用于字符串和日期时间
所以我试了这个
Where(x=> fdate >= x.storeddate.LocalDateTime.ToShortDateString()))
它说不能应用于字符串和字符串
我做错了什么?
我在这里写了一些代码来解决你的问题:
List<DateTime> ListDatesToCompare = new List<DateTime>(); //that list simulate your input list
ListDatesToCompare.Add(new DateTime(2022, 02, 01, 17, 47, 50, 348, DateTimeKind.Utc));
ListDatesToCompare.Add(new DateTime(2022, 05, 11, 18, 47, 50, 348, DateTimeKind.Utc));
ListDatesToCompare.Add(new DateTime(2022, 05, 21, 14, 40, 50, 348, DateTimeKind.Utc));
//this is your filter in string format
string fdate = "2022/02/01";
//for this example i've forced the culture info to be sure that the date will be correctly parsed (here some documentation: https://stackoverflow.com/questions/13797727/datetime-and-cultureinfo)
DateTime fDateParsed = DateTime.Parse(fdate, new System.Globalization.CultureInfo("en-EN"));
//here the result query
List<DateTime> ResultOfQuery = ListDatesToCompare.Where((DateTime CurrentDT) =>
{
//you can do this comparison because the variables has the same type.
return CurrentDT >= fDateParsed;
}).ToList();
我希望代码和我的英语是可以理解的,如果你还需要什么,给我发短信。