我有一个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子句中使用三元运算符来提供此开关?
答案 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();
}