优雅布尔LINQ查询灵活,适用于Active = true或Active = true或false

时间:2016-11-22 11:38:00

标签: c# entity-framework linq

我有一个LINQ查询来返回查找数据。 bool参数在被调用的active中传递。

我想要只返回active = true的行 要么 无论活动状态如何,都返回所有行 在LINQ的where子句中有一种优雅的方法吗?

          return await (from p in db.PackSizeTypes.AsNoTracking()
          where p.Active == true
          orderby p.ID

          select new PackSizeTypeObject
          {
              ID = p.ID,
              Name = p.Name.Trim(),
              LastEditedDate = p.LastEditedDate,
              LastEditedBy = p.LastEditedBy,
              Active = p.Active
          }).ToListAsync();

有没有办法在where子句中使用三元运算符来提供此开关?

1 个答案:

答案 0 :(得分:1)

 IEnumerable<PackSizeTypeObject> MyPackSizeTypeObjects(bool? isActive)
{

return await (from p in db.PackSizeTypes.AsNoTracking()
          where  p.Active == (isActive == null ? p.Active : isActive)
          orderby p.ID

 select new PackSizeTypeObject
      {
          ID = p.ID,
          Name = p.Name.Trim(),
          LastEditedDate = p.LastEditedDate,
          LastEditedBy = p.LastEditedBy,
          Active = p.Active
      }).ToListAsync();
}