J'ai un référentiel qui accède à mon Entity Framework. J'ai une méthode qui ressemble à ceci:Comment écrire un Func <T, bool> pour retourner l'entité avec le plus grand nombre d'enfants?
public TEntity FindOne(Expression<Func<TEntity, bool>> criteria)
{
var query = _queryAll.Where(criteria);
return query.FirstOrDefault();
}
J'ai 2 entités qui ont une relation de un à plusieurs. Appelons les Courses
et Students
. Un Course
peut avoir plusieurs Students
. J'aimerais écrire une requête qui renvoie le cours qui a le plus d'élèves. Mais comment écrire cela comme Func<T, bool>
?
J'espère que ce n'est pas
(x=>x.OrderBy(y=>y.Students.Count()).FirstOrDefault().id == x.id)
Parce que l'ajout d'un autre critère semble que cela ne fonctionnerait pas:
(x=>x.OrderBy(y=>y.Students.Count())
.FirstOrDefault().id == x.id
&& x.CourseName == "CS101")
merci pour le bug orderby - corrigé. Je suppose que ce dont je ne sais pas, c'est comment ajouter un second critère. Je pense que mon nom de propriété "Course" était confus et je ne l'ai pas lu - également corrigé. – itchi
Merci .. Je suis venu ici parce qu'il semblait grotesque :) Je pense que c'est plus un échec avec mon dépôt (qui n'expose pas IQueryable) que tout. Peut-être que je pourrais ajouter un FindTopOne (Expression> critères, Expression > trier) –
itchi