我有以下代码,其中我筛选出不属于“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#
中实现这一目标答案 0 :(得分:3)
var ExcludedTypes = new Type[] { Constants.Type1, Constants.Type2 };
List = Details.Where(p => !ExcludedTypes.Contains(p.Type)).ToList();
答案 1 :(得分:2)
你可以多次调用Where
(记住这不会影响你调用它的查询;只是返回值)。例如:
var query = Details.Where(p => p.Type != Constants.Type1);
if (avoidType2)
{
query = query.Where(p => p.Type != Constants.Type2);
}
List = query.ToList();
编辑:请注意,我将此方法用于通用动态过滤。如果你总是想要按类型过滤,而且它只是变化的有效类型列表,那么我会使用George的方法。