按日期过滤格式为mm-yyyy LINQ查询的日期字符串?

问题描述 投票:0回答:2

我们在mm-yyyy中将Date作为字符串。在Db中,日期字段存储为varchar。我们需要通过linq过滤日期。

.where(m=>m.ItemId == itemId && DbFunctions.CreateDateTime
(m.INV_GRN.ExpDate.Split('-')[1].CompareTo(2019), m.INV_GRN.ExpDate.Split('-')
[1].CompareTo(2), 1, 0, 0, 0.0) >= DbFunctions.CreateDateTime(2019,2,1,0,0,0.0))

我们需要通过比较将日期拆分为月份和年份来分割数据进行比较。我们怎样才能提取月份和年份以进行比较?

那么最好的方法是什么,我错过了什么?

c# .net visual-studio linq datetime
2个回答
0
投票

如果你的收藏已经只是mm-yyyy,我们可以简单地打电话给OrderByOrderByDescending

否则,我们可以做这样的事情

{
   var dateTimeStrings = database.GetAllDateTimes(); /* get our strings in dd-mm-yyyy format */

    var dateTimes = dateTimeStrings.Select(c => DateTime.Parse(c));
    var monthsAndYearsOnly = dateTimes.Select(dateTime => new DateTime(dateTime.year, datetime.month, 0 /* it requires days, lets pass in 0 */));

    // Lastly to get our dates ordered 
    var orderedDates = monthsAndYear.OrderBy(dateTime => dateTime); // looks strange but we're saying order by the date

    return orderedDates;
}

0
投票

您可以将ExpDate解析为日期并将其与特定日期进行比较,并且因为它们都是在同一天开始的,所以您将只对月份和年份进行比较。

.Where(m=> m.ItemId == itemId && DateTime.Parse("01-"+ m.INV_GRN.ExpDate).Date >= DateTime.Parse("2019-02-01").Date)
© www.soinside.com 2019 - 2024. All rights reserved.