Как получить элементы, которые были эффективны в пределах диапазона дат в linq - PullRequest
0 голосов
/ 10 октября 2019

У меня есть таблица элементов, созданных в сущности, и мне нужен запрос.

Каждый элемент имеет два свойства: Id и EffectiveDate

Мне нужен список всех предметов, которые были эффективны в пределах диапазона дат.

Это то, что у меня есть до сих пор:

var monthStart = new DateTime(2019, 10, 1);
var monthEnd = new DateTime(2019, 10, 31);

var items = dbContext.Items
     .OrderByDescending(a => a.EffectiveDate)
     .where(m => m.EffectiveDate <= monthEnd && m.EffectiveDate > monthStart)

Это получает все правильные предметы, кроме одного. Необходимо получить все элементы с датами вступления в силу внутри периода и последним до даты начала . Прямо сейчас он получает все элементы с датами вступления в силу за период.

Есть ли способ сделать это в одном запросе?

Например, у нас были элементы с этими датами вступления в силу (DD /ММ / ГГГГ):

  1. 05/05/2002
  2. 07/01/2005
  3. 08/07/2019
  4. 12/07/ 2019
  5. 15/07/2019
  6. 15/08/2019

И я хотел, чтобы предметы были в силе между 01/07/2019 и 31/07/2019 результат будет:

  1. 07/01/2005
  2. 08/07/2019
  3. 12/07/2019
  4. 15/07/2019

1 Ответ

3 голосов
/ 10 октября 2019

Вы можете объединить свой список с другим подзапросом, подобным этому:

var monthStart = new DateTime(2019, 10, 1);
var monthEnd = new DateTime(2019, 10, 31);

var items = dbContext.Items
     .OrderByDescending(a => a.EffectiveDate)
     .Where(m => m.EffectiveDate <= monthEnd && m.EffectiveDate > monthStart)
     .Concat(dbContext.Items.Where(d => d.EffectiveDate < monthStart).TakeLast(1))
...