Я пытаюсь получить элементы из 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();
}
}
Затем отсюда я делаю то, что мне нужно, любую помощь в архивировании такой фильтрации?
Вы просто предварительно вычисляете в С# требуемое значение и делаете в SQL простое сравнение:
var expiryDate = DateTime.Today.AddDays(30);
var memberships = db.Membership.Where(m => m.ExpiryDate > expiryDate);
Можешь попробовать:
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 для сущностей.