2010-10-04 2 views
2

Je suis en train de créer une application en utilisant le framework d'entité. Normalement j'utiliserais une procédure stockée pour obtenir des données spécifiques de ma base de données mais maintenant j'expérimente Entity Framework.Requêtes avancées dans linq pour les entités ou les procédures stockées

Maintenant, je fais face à un petit défi. J'ai une table de journal d'incident avec une clé primaire, un identifiant d'incident et quelques champs de données. Je dois obtenir toutes les nouvelles lignes pour chaque incident. Le sql est assez facile:

select * from incidentLog t join (sélectionnez incidentId, max (id) comme identifiant du groupe incidentLog par incidentId) tmp sur t.id = tmp.id

Comment puis-je convertir cela à linq à l'entité? Puis-je le faire en une seule opération ou dois-je utiliser une procédure stockée à la place?

Répondre

1

Cela devrait faire l'affaire:

var query = 
    (from i in context.IncidentLogs      
    group i by i.IncidentId into g 
    let maxID = g.Max(i => i.id) 
    select g.Where(i => i.id == maxID)).ToList(); 


Questions connexes