我想实现电子邮件功能,用户可以将电子邮件发送到20天后未登录的个人资料,也希望每10天重复一次。
I have three tables
1) "details" table where profile is maintained.
2) "notify" table where i keep a track of notification send to profiles.
3) "profile" table where i keep track of the login information of profile.
到目前为止,我已经尝试过这个 -
list = (from c in ctx.details.AsEnumerable()
join u in ctx.profile.AsEnumerable()
join a in ctx.notify..AsEnumerable()
on c.profileid equals u.profileid equals a.profileid
where (u.last_login_date == null &&
(DateTime.Now - u.last_login_date).TotalDays >= 20)
select new details
{
profileid = c.profileid.ToString(),
firstname = c.firstname,
lastname = c.lastname,
email = c.email
}).ToList();
My tables are ->
details notify profile
----------- ------------ --------------
profileid profileid profileid
firstname alert_date(datetime) last_login_date(datetime)
lastname
email
其中alert_date是他之前发送过电子邮件且last_login_date的日期 他最后登录个人资料的日期。
但我相信这不会起作用。我希望细节表充满细节。 帮助我。
答案 0 :(得分:1)
这是一个应该为每个没有登录20天或每10天增加一次(例如30天,40天)的配置文件返回详细信息对象的查询。
list = (from c in ctx.detail
join u in ctx.profile
on c.profileid equals u.profileid
join a in ctx.notify
on c.profileid equals a.profileid
let datediff = DateTime.Now.Subtract(u.last_login_date).TotalDays
where datediff >= 20 && datediff % 10 == 0
select c).ToList();
我已经删除了AsEnumerable
次调用,因为让数据库完成尽可能多的工作总是好的。它不是我的头脑,未经测试,所以仍然可能有一些错误,但这应该是一个很好的起点。