Of course:
var results = photos.Where(p => tags.All(tag => p.Tags.Contains(tag)));
or
var results = photos.Where(p => !tags.Except(p.Tags).Any());
EDIT: Please note that this assumes that you actually have a matching equality implementation in Tag. Otherwise, you will need something like:
var results = photos.Where(p => !tags.Select(t => t.Name)
.Except(p.Tags.Select(t => t.Name)).Any());
source
share