顺便说一下,我理解你的疑问;你需要这样的东西。。。
var maxId = (from e in email_log
where e.as_at_date < new DateTime(2010, 06, 18)
group e by e.template_id into grouped
select grouped.Max(a => a.id)).First();
var selectedEmailLog = from e in email_log
where e.id == maxId
select new
{
email_id = e.id,
e.sent_at,
e.sent_by,
e.template_id,
};
var seletedRows = from t in email_templates
join l in selectedEmailLog
on t.id equals l.template_id into tls
from tl in tls
select new
{
t.id,
tl.email_id,
tl.sent_at,
tl.sent_by,
};
... LINQ是可组合的,因此您可以将查询分解为可管理的部分。将查询分解成更小的部分将使其更易于理解。也可以返回复杂对象,而不是从数据库创建平面记录呈现。