Two query filters on one entity type.

Only the named pair both survive.

HasQueryFilter(filter)
.HasQueryFilter(i => i.TenantId == CurrentTenant)
.HasQueryFilter(i => !i.IsDeleted)
GENERATED WHERE
WHERE NOT ("i"."IsDeleted")
no tenant condition
ROWS RETURNED
A-1, G-1
FROM ANOTHER TENANT
1
HasQueryFilter(name, filter)
.HasQueryFilter("Tenant", i => i.TenantId == CurrentTenant)
.HasQueryFilter("SoftDelete", i => !i.IsDeleted)
GENERATED WHERE
WHERE "i"."TenantId" = @ef_filter__CurrentTenant
  AND NOT ("i"."IsDeleted")
ROWS RETURNED
A-1
FROM ANOTHER TENANT
0
what the names buy you the "show deleted" screen calls IgnoreQueryFilters(["SoftDelete"]) and gets A-1, A-2 — still nothing from another tenant. The no-argument IgnoreQueryFilters() drops every filter, tenant included, and returns all four rows.
EF Core 10.0.12 · SQLite · queried as tenant "acme" · every value asserted by the demo's tests
gdhami.net