我们将日期作为字符串以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))
我们需要通过将日期分为月份和年份部分进行比较来比较日期。我们该如何提取月份和年份部分以便进行比较?
那么最好的方法是什么,我想念的是什么?
答案 0 :(得分:0)
如果您的收藏仅是mmyyyy,我们可以简单地致电OrderBy
或OrderByDescending
否则,我们可以做类似的事情
{
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)