Expression Lambda: clause where pour Inclure la liste
Alors je suis quelque chose comme ceci:
var myObj = db.SomeObject
.Include("Tasks")
.SingleOrDefault(x => x.Id == someObjectId);
if (myObj != null)
{
myObj.Tasks = myObj.Tasks.OrderBy(x => x.Number).ToList();
}
Ici je veux être en mesure de mettre une condition (where
) sur mon Incluent, par exemple:
.where task.IsDeleted == false
Jusqu'à maintenant je n'ai pas trouvé une solution.
Je suis conscient du fait que je pouvais utiliser le where
avec où je l'ordonnancement des tâches, mais cela, cependant, ne se fait pas sur la base de données, mais à la place utilise de la mémoire. Je veux qu'il fonctionne sur la base de données.
Ce que quelqu'un ici sait comment je peux faire cela?
Si oui, est-il aussi un moyen de mettre la order by
condition à la liste de tâches?
- Ne pense pas que c'est possible.
- Pourquoi ne pas vous les tâches? Et Puis il suffit de l'objet sans les tâches?
- que voulez-vous dire?
Vous devez vous connecter pour publier un commentaire.
Quelque chose comme cela, returs vous votre objet original avec son enfant de la collection filtrés et triés.
C'est en fait perdre la collection d'activités dans le dernier sélectionnez sorte que vous pouvez le faire :
Pour ce faire est EF, vous devez spécifier une projection avec une
Select
clause.Quelque chose comme cela permet d'obtenir uniquement les données que vous voulez à partir de la db:
Vous allez vous retrouver avec une instance du type anonyme , mais vous pouvez facilement le fixer sur le client:
La réponse est simple: Vous ne pouvez pas le faire.
Pourquoi? Parce que vous interrogez
SomeObject
.Chaque retourné
SomeObject
contient toutes les données référencées, parce que si il ne vaudrait-il pas de ne pas représenter le réel de l'objet dans la base de données.IsDeleted
indicateur a la valeurtrue
Ce que les obtenir séparément: