首页 > 解决方案 > 检查 DateTime 是否有时间

问题描述

假设我有一个数据库列“A”。DB 中的列类型可以是 Date 或 DateTime。我正在创建一个动态过滤器查询:

filterFragment = Expression.AndAlso(
                            Expression.GreaterThanOrEqual(memberExpression, Expression.Constant(beginDate)),
                                Expression.LessThan(memberExpression, Expression.Constant(endDate.AddSeconds(1))));

在哪里,

memberExpression = Expression.Property(rootExpression, property);
rootExpression = Expression.Parameter(targetType, targetType.Name);
queryableSource = source.AsQueryable();
results = queryableSource.Expression;
targetType = queryableSource.ElementType;

IEnumerable<TSource> source is a parameter to the method generating the dynamic filterExpression.

附上运行时 memberExpression 值的截图: 在此处输入图像描述

这是类型值:

在此处输入图像描述

如何检查 memberExpression 的类型是否有时间部分或者它是没有任何时间部分的 ShortDate?我想检查 memberExpression 类型的原因是,如果它有时间部分,我需要做 endDate.AddSecond(1),如果没有时间部分需要在 Expression 中使用 LessThanOrEqual:

filterFragment = Expression.AndAlso(
                            Expression.GreaterThanOrEqual(memberExpression, Expression.Constant(beginDate)),
                                Expression.LessThanOrEqual(memberExpression, Expression.Constant(endDate)));

问题的更多细节在这里

标签: c#reflectionexpression

解决方案


推荐阅读