J'ai 2 tables p> 1- userinfo p> 2- Score P> from s in Scores
join i in UserInfos
on s.uid equals i.uid
group uscore by new { s.uid, i.name} into g
let maxScore = g.Max(p => p.score)
select new ScoreUser
{
uid = g.Key.uid,
name = g.Key.name,
score = maxScore
}
3 Réponses :
Vous êtes également groupé par (mise à jour) em> p> Je vois que vous avez trouvé le problème. Cependant, je vous laisse ici un test sur cette requête: p> impressions: p> score code> quand il devrait être l'agrégateur. Essayez ceci:
Pour la saveur de quelqu'un, fournissez ici deux linq à l'aide d'expressions Lambda pour sélectionner une valeur maximale dans un groupe
Linq à l'aide de Lambda Expressions P>
var qry = Scores.Join(UserInfos, s => s.uid, i => i.uid, (s, i) => new { s, i })
.GroupBy(g => new { g.s.uid, g.i.name })
.Select(g => new { su = g.OrderBy(i => i.s.score) })
.Select(x => x.su.LastOrDefault()).ToList();
var list = records.GroupBy(p => p.Year, (key, g) => g.OrderByDescending(y => y.Month).First()).ToList(); Above query will return a list that includes the highest month item by grouping the years.
Très impressionnant. C'est évidemment la meilleure réponse, depuis sa concision. Cela m'a beaucoup aidé.
Qu'est-ce qui est retourné? Avez-vous une erreur?
Ne devriez-vous pas changer les scores et les tables userinfos? "De I dans userinfos rejoignez S dans les scores ..." Fondamentalement, votre sélection principale est de 7 enregistrements.