2009-02-27 6 views
0

J'utilise l'implémentation de LazyList de Rob et ça fonctionne très bien.. Où sur un LazyList ne fonctionne pas

Cependant, je ne suis pas en mesure d'obtenir une clause .where qui fonctionne sur une entité enfant de type LazyList.

Par exemple. quelque chose comme

var qry = orderRepository.GetOrders(); 
qry = from p in qry where p.Items.Where(t => t.Name == "test") select p; 

produit l'erreur de compilation suivante:

Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<Items>' to 'bool' 

Quelle est la bonne façon d'interroger une entité enfant?

Répondre

0

Vous ne savez pas exactement ce que vous tentez d'obtenir avec cette instruction.

Si vous voulez que toutes les commandes qui ont un élément avec le nom « test » puis utilisez:

var qry = orderRepository.GetOrders(); 
qry = from p in qry where p.Items.Any(t => t.Name == "test") select p; 

Si vous voulez que tous les éléments qui sont nommés « test » puis utilisez:

var qry = orderRepository.GetOrders(); 
qry = from p in qry select p.Items.Where(t => t.Name == "test"); 
1

Vous avez besoin de Any. Vous avez déjà une clause where, et l'utilisation d'une seconde ne fera rien de bien. La première où (la minuscule) veut qu'un booléen puisse effectuer le filtrage, mais vous fournissez un IEnumerable<Items> (parce que c'est ce que retourne le second .Where). Any fonctionne de la même manière que Where mais renvoie un booléen chaque fois qu'il y a au moins un élément qui correspond à la requête que vous avez spécifiée.

Questions connexes