我有一个EF linq查询,我想基于true/false参数设置where条件。我可以在SQL中做类似的事情,这在某种程度上是我写EF查询的方式,但它似乎不适用于EF Core。
当我期望执行的SQL时,如果我传递"activeOnly = true",则没有应用条件的SQL,当我传递"activeOnly = false"时,则条件为"where 0 = 1"。
显然我错了,但我想不出正确的方法来做这件事?或者如果可能的话?
public async Task<List<UserDto>> GetUsersAsync(string region, bool activeOnly)
{
var allUsers = new List<UserDto>();
var countries = _configuration.GetRegionConfiguration(region).Countries;
foreach (var country in countries)
{
_context.ChangeConnectionString(country.DatabaseConnectionString);
var users = await _context.User
.ProjectTo<UserDto>(_mapper.ConfigurationProvider)
.Where(x => (activeOnly && (x.RoleIds != null)) || (!activeOnly && (x.RoleIds == null)))
.ToListAsync();
allUsers.AddRange(users);
}
allUsers.OrderBy(x => x.FullName);
return allUsers;
}
1条答案
按热度按时间x759pob21#
当前版本在您使用此类查询时会发出有用的警告:
仅当集合导航父实体为Null时,集合导航才被视为Null请使用'Any'检查集合导航'YourEntity.YourNavigationColleciton'是否为空
所以与其
使用了