using System.Collections.Generic;
public string Id { get; set; }
public IEnumerable<string> TagIds { get; set; }
public static void Main()
var entities = new List<Entity> {
new Entity { Id = "A", TagIds = new []{ "foo", "bar", "baz" } },
new Entity { Id = "B", TagIds = new []{ "foo", "bar" } },
new Entity { Id = "C", TagIds = new []{ "foo", "dolor" } },
new Entity { Id = "D", TagIds = Array.Empty<string>() },
var query = new[] { "foo", "bar" };
var results = entities.Where(entity => query.All(Id => entity.TagIds.Contains(Id)));
foreach (var result in results)
Console.WriteLine(result.Id);