Фильтрация строки даты в формате мм-гггг LINQ-запрос по дате? - PullRequest
0 голосов
/ 27 февраля 2019

У нас дата в виде строки в мм-гггг.В 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))

Нам нужно сравнить, разделив дату, сравнив ее разбивку на части по месяцам и годам.Как мы можем извлечь часть месяца и года для сравнения?

Итак, каков наилучший путь, и что мне не хватает?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Вы можете проанализировать ExpDate до даты и сравнить ее с определенной датой, и, поскольку оба они начинаются с одного и того же дня, вы будете сравнивать только месяц и год.

.Where(m=> m.ItemId == itemId && DateTime.Parse("01-"+ m.INV_GRN.ExpDate).Date >= DateTime.Parse("2019-02-01").Date)
0 голосов
/ 27 февраля 2019

Если ваша коллекция уже всего лишь мм-гггг, мы можем просто позвонить 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...