.Include() .Où() .Sélectionnez() dans une Requête Linq to entities
J'ai une requête Linq qui interroge les tableaux suivants: les Tâches avec un un-à-plusieurs lien: TaskLinks et TaskLinks a un un-à-un lien vers un Tableau appelé Entités.
Je suis en train de sélectionner la tâche, désireux de charge (par .Inclure) le TaskLinks et sélectionnez l'Entité liée à la TaskLink. Mais j'ai besoin de filtre de la Tâche (par Niveau d'Accès de type int) et le TaskLinks de sorte que je ne comprend pas les Inactifs (bool) de dossiers.
Voici ma requête Linq:
Tasks.Where(t => t.AccessLevel <= 5)
.Include(tl => tl.TaskLinks.Where(tl2=> tl2.IfInactive == false)
.Select(tls => tls.Entity))
J'exécute cette requête dans LinqPad, et j'obtiens l'erreur suivante que je ne comprends pas:
ArgumentException: Le chemin de l'expression doit se référer à une propriété de navigation défini le type. Utilisation parsemée de chemins pour référence les propriétés de navigation et de sélection de l'opérateur de collecte des propriétés de navigation.
Nom du paramètre: voie
Comment puis-je ré-écrire cette requête, afin que je puisse filtre Inclus TaskLinks, et sélectionnez l'Entité?
Vous en remercie d'Avance!!!!
Bob
Entity
vous pouvez Join
tables et filtrer par AccessLevel
et IfInactive
.OriginalL'auteur Bob Bartel | 2013-12-02
Vous devez vous connecter pour publier un commentaire.
.Include(...)
"suggère" à la requête du fournisseur avides de charger la propriété de navigation. Dans ce cas, il ne sera pas faire b/c vos résultats ne sont pasTask
entités, ils sontEntity
entités.Dans tous les cas, vous n'avez pas de filtre une collection de navigation de la propriété dans une instruction include (qui est la cause de votre erreur).
Vous voulez suivantes:
supprimer la
Select
et ajouter un appel à.GroupBy( tl => tl.Task )
, qui regroupera le filtréeTaskList
s parTask
. Ensuite le projet les résultats que vous voulez avides de charge. Essayez la mise à jour de la requête dans ma solutionJe vous remercie. Je pense que nous y sommes presque!! La seule chose que je pense que nous manque, c'est la totalité de la Tâche (tout ce que je suis maintenant est la propriété de navigation pour la tâche)
OriginalL'auteur Moho