2011-06-15 6 views
4

Je rencontre un problème commun, et j'aimerais savoir comment le faire.Quel est le moyen le plus efficace de comparer ces deux listes?

Dire que j'ai une liste ou un tableau de ints:

var ids = new List<int>(); 
// pretend I populate 5 or 6 integers 

et moi avons une classe de voitures que je tire de la base de données comme ceci:

var cars = carRepo.GetAll(); 

Et bien sûr, disons que le La classe Car a une propriété Id. Il sent comme si je devrais être capable de faire quelque chose de mieux que de simplement boucler à travers les voitures et de le vérifier par rapport aux ID. Comme il y a une sorte d'instruction Aggregate() ou Select() qui peut obtenir ce que je veux. Y a-t-il? C'est une chose assez commune que je rencontre tout le temps.

Répondre

1

Je ne sais pas ce que vous entendez par comparaison, mais si vous essayez de voir dans la collection cars a tous les ids de votre List<int>, vous pouvez le faire

var result = cars.All(c => ids.Contains(c.Id)); 
0
var filtered = cars.Where(car => ids.Contains(car.Id)); 
1

Tout est un chèque booléenne tous les éléments du match de collection que vous voulez .... Où

carRepo.Where(c => ids.Contains(c.Id)); 
1

vous pouvez effectuer simple Inner Join pour sélectionner toutes les voitures avec un ID dans la liste des ID:

var query = from car in cars 
      join id in ids on car.Id equals id 
      select car; 
0

A titre d'exemple:

bool isEqual = ids.Count == cars.Count && cars.All(car=>ids.Contains(car.Id)); 
Questions connexes