Voici ce que j'ai jusqu'à présent:
ID,Reason --------- 0,Weather 1,Traffic 2,Illness 3,Weather 4,Traffic 5,Traffic 6,Pirates
3 Réponses :
var bestReason = successfulReasons
.GroupBy(r => r.Reason)
.OrderByDescending(grp => grp.Count())
.First().Key;
devrait être .first (). clé code> à la fin imo
Merci. J'ai continué à essayer de mettre en oeuvre en quelque sorte max (). OrderbyDescendant () et premier () travail génial. Alors, comment puis-je marquer une réponse lorsque deux personnes ont dit fondamentalement la même chose? Je pense que j'aime bien la linqiness (est-ce un mot?) De plus (c'est-à-dire comment chaque commande fonctionne avec les résultats de la précédente).
@Slightly A - Je crois qu'il y a un temps minimum avant de pouvoir accepter une réponse.
Si je comprends votre question correctement, vous pouvez faire:
string bestReason =
(from p in successfulReasons
orderby p.Reason
group p by p.Reason into g
orderby g.Count() descending
select g.Key).FirstOrDefault();
Lorsque vous appelez Count () sur votre IQuéryable
@weirdlover, c'est une très bonne question. La plupart du temps, j'utilise Linq vers des objets ou sur XML, je n'ai donc jamais eu la chance d'essayer avec le fournisseur SQL.
D'ACCORD. Répondu à ma propre question. On dirait que Linq est assez intelligent pour générer un bref ... Sélectionnez le top 1 ... Appel. Assez cool, en fait.
Ajouté le SQL généré à ma réponse - et je vous donne le uppot de répondre correctement à la question. Merci de me forcer à regarder sous le capot! Acclamations, e
string excuse = this.repo.Excuses.MostCommonFor(ProblemList.BeingLate);