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

时间:2019-02-27 14:29:42

标签: c# .net visual-studio linq datetime

我们将日期作为字符串以mm-yyyy表示。在Db中,日期字段存储为varchar。我们需要按日期过滤日期。

.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))

我们需要通过将日期分为月份和年份部分进行比较来比较日期。我们该如何提取月份和年份部分以便进行比较?

那么最好的方法是什么,我想念的是什么?

2 个答案:

答案 0 :(得分:0)

如果您的收藏仅是mmyyyy,我们可以简单地致电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;
}

答案 1 :(得分:0)

您可以解析ExpDate至今的日期并将其补全为一个特定的日期,由于这两个日期都是从同一天开始的,因此您只需要对月份和年份进行取舍。

.Where(m=> m.ItemId == itemId && DateTime.Parse("01-"+ m.INV_GRN.ExpDate).Date >= DateTime.Parse("2019-02-01").Date)