我试图创建一个GET方法与不同的可选过滤器,我想,如果任何过滤器是空的,它不过滤该字段。我有下面的代码,但如果它进入一个以上的地方,它不工作。如何解决我的问题?
public List<GetUserResponseDto> GetUsers(GetUserParametersDto parameters)
{
UserRepository userRepository = new(_context);
IQueryable<User> query = userRepository.GetAll();
if (parameters.Status?.Count > 0)
{
query = query.Where(p => parameters.Status.Contains(p.State));
}
if (!string.IsNullOrEmpty(parameters.Platform))
{
query = query.Where(p => string.Equals(p.Platform, parameters.Platform, StringComparison.OrdinalIgnoreCase));
}
if (!string.IsNullOrEmpty(parameters.IdentityCardNumber))
{
query = query.Where(p => string.Equals(p.IdentityCardNumber, parameters.IdentityCardNumber, StringComparison.OrdinalIgnoreCase));
}
return query.Select(GetUserResponseDtoMapper.FromUser).ToList();
}
我试过在不同的地方做,但没有成功,我也试过创建一个动态 predicate ,但没有成功。
1条答案
按热度按时间nzk0hqpo1#
可以使用&&和||以合并过滤器。使用或使它们成为可选的,例如:
这样行吗