2016-08-31 1 views
-3

J'ai deux collections ProdList<Product, int> et RuleList<Product, int> contient la liste des produits et des comptes.comment vérifier si la collection contient la collection

comment puis-je obtenir si ruleList tous les articles partici dans la collecte ProdList J'ai essayé avec

bool a= ProdList.All(x => RuleList.Contains(x)); 

mais il ne fonctionne pas.

+0

Vous devez substituer la méthode 'Equals' et votre code fonctionnera – RafaelC

+0

Quoi ProdList et RuleList? Dictonaries je suppose? Essayez-vous de faire correspondre le produit ou l'int? ou les deux? – SledgeHammer

+0

@SledgeHammer à la fois –

Répondre

1

La raison pour laquelle cela ne fonctionne pas parce que la méthode Contains utilise la Equals et GetHashCode des articles qui sinon outrepassée, sont celles de object.

Solutions:

  1. Remplacer Equals et GetHashCode
  2. de votre objet Utiliser Any au lieu de Contains:

    var result = ProdList.All(x => RuleList.Any(y => x.Product.Equals(y.Product) && 
                   x.IntValue == y.IntValue)); 
    
  3. Mettre en oeuvre une coutume IEqualityComparer pour le type de votre objet

Notez que dans toutes ces options, vous devez également prendre soin de comparer la classe Product (même 3 options sont disponibles)

+0

Merci fonctionne correctement –

+0

@eminach - Vous êtes les bienvenus :) –