J'ai deux collections: l'un est des éléments et un autre est actifItems
la seule intersection entre ces deux collection est le nom P>
Je souhaite une liste avec Linq d'éléments où les noms d'éléments sont dans les actifs. Avec ce nom P>
J'ai écrit ce code est une meilleure idée: p>
4 Réponses :
Je créerais probablement un ensemble de noms à partir de ActiveItems CODE>, puis utilisez-le:
var query = from item in items
join activeItem in activeItems
on item.Name equals activeItem.Name
into g
where g.Any()
select item;
Non je ne veux pas de propriétés d'une autre collection
Solutions 2 et 3 utilisera-t-elle des hashsets en interne sans Activenames Code> en être un?
@Magnus: Oui ... Je viens de trouver la première version est plus claire quand vous n'avez pas vraiment besoin des jointures :)
Items.where(i => ActiveItems.Any(a => i.Name == a.Name))
var results = from i1 in collection1.Items join i2 in collection2.ActiveItems on i1.Name equals i2.Name select i2.Name;
Utilisation d'une jointure:
from item in Items join active in ActiveItems on item.Name equals active.Name select item
La jointure devrait être ... sur item.name est égal à Active.name. La séquence est importante