复杂的过滤

时间:2014-10-19 17:32:25

标签: c# infragistics

我想创建一个复杂的过滤,以便

(ColumnA == X或ColumnA == Y)AND(ColumnB == Z或ColumnC == W)

我做的是:

ultraGridResults.DisplayLayout.Bands[0].ColumnFilters.LogicalOperator = FilterLogicalOperator.And;
ultraGridResults.DisplayLayout.Bands[0].ColumnFilters["ColumnA"].FilterConditions.Add(FilterComparisionOperator.Equals, X);
ultraGridResults.DisplayLayout.Bands[0].ColumnFilters["ColumnA"].FilterConditions.Add(FilterComparisionOperator.Equals, Y);
ultraGridResults.DisplayLayout.Bands[0].ColumnFilters["ColumnA"].LogicalOperator = FilterLogicalOperator.Or;
ultraGridResults.DisplayLayout.Bands[0].ColumnFilters["ColumnB"].FilterConditions.Add(FilterComparisionOperator.Equals, Z);
ultraGridResults.DisplayLayout.Bands[0].ColumnFilters[ColumnC].FilterConditions.Add(FilterComparisionOperator.Equals, W);

问题在于,由于ColumnB不同,因此ColumnC我不知道如何插入"或"在这两个条件之间。 我得到的结果是:

(ColumnA == X或ColumnA == Y)AND(ColumnB == Z)AND(ColumnB == W) 而不是我想要的是:

(ColumnA == X或ColumnA == Y)AND(ColumnB == Z或ColumnC == W)

如何编写过滤器,以便右侧还有一个Or运算符? 感谢

1 个答案:

答案 0 :(得分:0)

我认为这就是你想要的。考虑所有列都是相同的数据类型,如果不是,你总是可以转换或解析这些值:

if (ColumnA == X || ColumnA == Y && ColumnB==Z || ColumnC == W)
{
//Code here
}

如果这对您有帮助,请向我发送反馈。