最近我在使用一些动态搜索表达式时遇到了一些问题,当我尝试搜索多个日期/时间时出现了问题。
我的搜索表达式构造函数如下所示(有些被省略了):
public SearchExpression(string propertyName,
ComparisonOperator comparisonOperator,
object value) {...}
和
public SearchExpression(string propertyName,
ComparisonOperator comparisonOperator,
object[] values,
BooleanOperator innerBooleanOperator) {...}
当传递以下内容时,这两种方法都能正常工作:
- 字符串
- 数字(或任何数值数据)
然而,当涉及到传递日期时间信息时,我开始遇到一些问题。
当数据根据类型(日期时间、数字或字符串)分开处理并检查有效性后,它们将被存储到数组中以便于传递到正确的表达式中,如下所示:
object[] stringParameters;
object[] numericalParameters;
DateTime[] dateParameters;
当我传入以上任何一种类型时,它们都有效,唯独DateTime数组参数无法使用。
因此我的问题是,为什么我可以将单个DateTime值作为对象传递,但无法将 DateTime[]
作为 object[]
传递。
示例:
DateTime[] dateParameters;
//This works fine
new SearchExpression("DateTime", ComparisonOperator.Equals, dateParameters[0]);
//This fails to work
new SearchExpression("DateTime", ComparisonOperator.Equals, dateParameters,
BooleanOperator.Or);