Je développe une application .NET dans laquelle je dois filtrer des données provenant de SQL Server 2008 en fonction d'une condition. Ma structure de données ressemble à ceci :
Les résultats doivent être regroupés et triés par clé. Par défaut, la ligne dont la révision est nulle doit être renvoyée pour chaque clé, mais si le paramètre revisionParameter est défini, la ligne avec le numéro de révision correspondant doit être renvoyée. Si le paramètre est deux, le résultat doit être :
abc 2 FALSE
def null TRUE
ghj 2 FALSE
klm null TRUE
Comment puis-je réaliser cela avec LINQ ? Merci de votre compréhension.
EDIT : Réponse à lazyberezovsky : Votre expression LINQ réécrite en lambda :
partial void RuleEntriesByUserSaveId_PreprocessQuery(int? UserSaveId, ref IQueryable<RuleEntry> query)
{
query = query.Where(re => re.Revision == null || re.Revision == value)
.GroupBy(re => re.Key)
.Select(g => g.FirstOrDefault(x => x.Revision != null) ?? g.First());
}