Мой SQL-фу не сказочный, и это до моего первого кофе, так что я предполагаю, что «l» во внешнем запросе в конечном итоге будет совершенно другим «l» по сравнению с тем, что в подзапросе?
Я думаю, это сработает, но вам нужно быть уверенным :) Стоит проверить, как выглядит сгенерированный SQL. Конечно, если вы не возражаете против выполнения двух запросов, это будет несколько проще.
// Can't do the "Take(1)" here or it will be executed separately
var subquery = from cl in context.CL
join l in context.L on cl.Lid = l.Lid
where l.meta1 = 5 // could put this in join clause
group cl.ModDate by cl.lid into grouped
order by grouped.Max() descending
select grouped.Key;
// But can take the first result of the join
// This may be simpler using dot notation instead of a query expression
var query = (from l in context.L
join lid in subquery
select l).Take(1);
(РЕДАКТИРОВАТЬ: я не принимал максимальное значение ModDate раньше. Doh. Также упростил группировку, используя идентификатор в качестве ключа (который уже был), поэтому нам нужны только ModDate в качестве значений группы.)