Получить самый последний и один перед самым последним товаром - PullRequest
1 голос
/ 04 марта 2010

У меня есть таблица со многими годовщинами: Дата + Имя.

Я хочу отобразить следующую годовщину и следующую после Linq.

Как я могу построить запрос? Я использую EF Спасибо John

Ответы [ 3 ]

1 голос
/ 04 марта 2010

Пример со списком некоторых объектов, предполагая, что вы хотите упорядочить по дате, затем по имени:

List<Anniversaries> annivDates = GetAnnivDates();
List<Anniversaries> recentAnniv = annivDates.OrderBy(d => d.Date).ThenBy(d => d.Name).Take(2).ToList();
1 голос
/ 04 марта 2010

Просто закажите по дате, а затем используйте функциональность .Take(n)

0 голосов
/ 04 марта 2010

Если годовщины хранятся в обычных DateTime структурах, они могут иметь «неправильный» год (т. Е. Год свадьбы или рождения). Я предлагаю написать функцию, которая вычисляет следующую дату для годовщины (на основе текущего дня), например:

static DateTime CalcNext(DateTime anniversary) {
  DateTime newDate = new DateTime(DateTime.Now.Year, anniversary.Month, anniversary.Day);
  if (newDate < DateTime.Now.Date)
    newDate = newDate.AddYear(1);
  return newDate;
}

Затем вы продолжаете сортировку дат и получение первых двух значений, как описано в других публикациях:

(from e in anniversaries orderby CalcNext(e.Date) select e).Take(2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...