Comme Steve dit, votre SQL n'est pas valide sans Propriété1 etc. dans la clause globale. Cependant, il me semble que vous essayez d'obtenir les données pour ces «lignes» où la date est égale à la date maximale pour le groupe de «lignes» par Id?
Cela fonctionne comme ça:
recs.GroupBy(r => r.Id).SelectMany(g => g.Where(r => r.Date == g.Max(a => a.Date)))
Groupes par Id, obtient un IEnumeration des éléments dont la date correspond à la date maximum pour ce groupe, et les aplatit en une seule IEnumeration - qui peut alors être itéré ou tout ce que vous voulez.
Edit: Par ailleurs, dans la requête syntaxe du mieux que je peux faire (m'a pris un certain temps ...) est quelque chose comme:
from r in recs
where r.Date ==
(from sr in recs
where sr.Id == r.Id
select sr.Date).Max()
select r;
Edit 2:
Ce qui est en fait plus :
recs.Where(r => r.Date == recs.Where(sr => sr.Id == r.Id).Max(a => a.Date)).Select(r => r)
dans la syntaxe couramment, ce qui ne semble pas aussi agréable pour moi que la première façon que je l'ai fait ... Je ne aime pas vraiment la syntaxe d'expression de requête, ce qui est drôle parce que je suis à l'aise avec SQL et la syntaxe de requête est censée être plus comme SQL.
Merci Steve. Et désolé de la requête incorrecte. Mais tu m'as donné ce dont j'avais besoin. – Dave