C# 我如何使用linq和EF从SQL数据库中进行选择,其中ExpiryDate是从今天起使用DateDiff函数过期30天
我正在尝试使用EF和Linq从SQL db中获取项目,其中成员资格日期过期此日期在db中已经预先确定,我想使用C中的DateDiff函数获取过期日期在30天内的项目,我如何才能做到这一点我对C还是新手,以下是我到目前为止的资料C# 我如何使用linq和EF从SQL数据库中进行选择,其中ExpiryDate是从今天起使用DateDiff函数过期30天,c#,linq,entity-framework,C#,Linq,Entity Framework,我正在尝试使用EF和Linq从SQL db中获取项目,其中成员资格日期过期此日期在db中已经预先确定,我想使用C中的DateDiff函数获取过期日期在30天内的项目,我如何才能做到这一点我对C还是新手,以下是我到目前为止的资料 using (var db = new DbContext()) { // this is where I want to filter the list to get only members with an // expiration date is
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();
}
}
然后我在这里做我需要的其他事情,有没有关于归档这种过滤的帮助?您可以尝试:
var membership = db.Memberships.Where(m => SqlFunctions.DateDiff(m.ExpiryDate, /*[other parameters]*/))
确保不要在其他参数中使用方法。如果需要DateTime.Today.AddDays30,请在linq to entities中使用它之前将其声明为变量
但是,基于您的问题,我认为您并不真正需要DateDiff函数。您只需在linq to entities查询中将ExpireyDate与targetDate=DateTime.Today.AddDays30进行比较。您只需在C中预先计算所需的值,然后在SQL中进行简单比较:
var expiryDate = DateTime.Today.AddDays(30);
var memberships = db.Membership.Where(m => m.ExpiryDate > expiryDate);