使用c#对linq的where子句进行动态查询
本文关键字:动态 查询 子句 where linq 使用 | 更新日期: 2023-09-27 18:04:26
我在下面的代码中过滤掉不属于"type1"的类型。
List = Details.Where(p => p.Type != Constants.Type1).ToList();
现在我必须动态地创建where查询,其中我可以有更多的子句来过滤数据。
所以上面代码的修改版本是
List = Details.Where(p => p.Type != Constants.Type1 && p.Type != Constants.Type2 ).ToList();
请告诉我如何在c#中实现这个
var ExcludedTypes = new Type[] { Constants.Type1, Constants.Type2 };
List = Details.Where(p => !ExcludedTypes.Contains(p.Type)).ToList();
你可以多次调用Where
(记住这不会影响你调用它的查询;只是返回值)。例如:
var query = Details.Where(p => p.Type != Constants.Type1);
if (avoidType2)
{
query = query.Where(p => p.Type != Constants.Type2);
}
List = query.ToList();
编辑:请注意,我将此方法用于通用动态过滤。如果您总是希望仅按类型进行过滤,并且它只是有效类型的变化列表,那么我会使用George的方法。