我正在尝试建立一个谓词。我尝试了许多方法来实现这一目标。
问题的要点是……当Entity Framework生成SQL时,它会生成WHERE子句
…WHERE SchoolId IN(@ gp1)
但是,租户中可以有多个SchoolId值。
当我尝试记录@ gp1时,我看到这样的内容 1234,67788,234556
我希望生成的内容更像这样 …在哪儿SchoolId(@ gp1,@ gp2,@ gp3,...)
这是当前代码
public class Tenant
{
public Tenant(List<string> schoolIds)
{
SchoolIds = schoolIds;
}
public List<string> SchoolIds { get; }
}
public class AccountRepository : IAccountRepository
{
private IEnumerable<Domain.Entities.PersonAccount> Get(Tenant tenant)
{
var predicate = PredicateBuilder.New<PersonAccount>(true);
// Base query
var accountsQuery = PersonAccounts;
predicate = predicate.And(acct =>
tenant.SchoolIds.Contains(acct.SchoolId));
accountsQuery = accountsQuery.AsExpandable().Where(predicate);
return EntityMapper.ToDomain(accountsQuery.ToLidt());
}
}