如何修改Linq查询新增status=1的激活状态过滤条件
解决方案
你只需要在Where查询条件中追加status == 1的判断,和原有空值判断用逻辑与&&关联即可,修改后的代码如下:
public List<FileModel> GetMyData() { var collectedData = _context.MyUploads.AsNoTracking().Where(t => // 新增激活状态判断 t.Status == 1 && // 原有空值判断要套括号,避免运算符优先级导致逻辑错误 (t.FirstName == null || t.LastName == null || t.EmailAddress == null || t.Telephone == null)) .Select(x => _mapper.Map<FileModel>(x)) .ToList(); return collectedData; }
注意事项
- 必须给原来的四个空值判断套上括号:因为
&&优先级高于||,如果不加括号,查询逻辑会变成「Status等于1且FirstName为空,或者剩下三个字段任意为空」,会把未激活但是后三个字段为空的记录也查出来,不符合需求。 - 如果你的实体类中status字段是小写开头命名的,把代码里的
t.Status改成t.status即可,保持和实体属性命名一致。
内容的提问来源于stack exchange,提问作者Baba
相关产品推荐
相关产品推荐

