Вы получаете эту ошибку, потому что allAnimalList
- это список Animal
, а x
(в селекторе LINQ) имеет тип Zoo
. Поэтому, когда вы делаете allAnimalList.Contains(x)
, вы пытаетесь увидеть, содержит ли список Animal
Zoo
, который выдает ошибку: Cannot convert from Animal to Zoo.
Попробуйте это:
// Use a hashset to make .Contains() an O(1) operation
var zooIDs = new HashSet<int>(from zoo in allZooList select zoo.Z_ID);
List<Animal> matchingAnimal = allAnimalList.Where(animal => zooIDs.Contains(animal.ZooID)).ToList();
Чтобы использовать LINQ JOIN:
var matchingAnimal = from animal in allAnimalList
join zoo in allZooList
on animal.ZooID equals zoo.Z_ID
select animal