Как выбрать из базы данных SQL, используя linq и EF, где ExpiryDate составляет 30 дней, чтобы истечь с сегодняшнего дня, используя функцию DateDiff

1

Я пытаюсь получить элементы из SQL db, используя EF и Linq, где истекает срок членства (эта дата уже задана в db), я хочу получить элементы, срок действия которых истекает через 30 дней с использованием функции DateDiff в С#, как я могу это сделать, я еще новичок в С#, вот что я до сих пор.

using (var db = new DbContext())
{
    // this is where I want to filter the list to get only members with an
    // expiration date is 30 days from today
    List<Membership> membership = db.Membership.Where(m => m.ExpiryDate... 

    foreach(var member in members)
    {
        DoWork();
    }
}

Затем отсюда я делаю то, что мне нужно, любую помощь в архивировании такой фильтрации?

Теги:
linq
entity-framework

2 ответа

0
Лучший ответ

Вы просто предварительно вычисляете в С# требуемое значение и делаете в SQL простое сравнение:

var expiryDate = DateTime.Today.AddDays(30);
var memberships = db.Membership.Where(m => m.ExpiryDate > expiryDate);
0

Можешь попробовать:

var membership = db.Memberships.Where(m => SqlFunctions.DateDiff(m.ExpiryDate, /*[other parameters]*/))

Убедитесь, что вы не используете методы в других параметрах. Если вам нужно DateTime.Today.AddDays(30) объявить его как переменную, прежде чем использовать его в linq для сущностей.

Однако, исходя из ваших вопросов, я не думаю, что вам действительно нужна функция DateDiff. Вам нужно только сравнить ExpiryDate с targetDate = DateTime.Today.AddDays(30) в вашем запросе linq для сущностей.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню