|
@ -78,7 +78,6 @@ namespace Win.Sfs.Shared.Filter |
|
|
//var constant = Expression.Constant(filterCondition.Value);//创建常数
|
|
|
//var constant = Expression.Constant(filterCondition.Value);//创建常数
|
|
|
|
|
|
|
|
|
ConstantExpression constant = null; |
|
|
ConstantExpression constant = null; |
|
|
|
|
|
|
|
|
if (filterCondition.Action != EnumFilterAction.In && filterCondition.Action != EnumFilterAction.NotIn) |
|
|
if (filterCondition.Action != EnumFilterAction.In && filterCondition.Action != EnumFilterAction.NotIn) |
|
|
{ |
|
|
{ |
|
|
constant = CreateConstantExpression(member.Type, filterCondition.Value); |
|
|
constant = CreateConstantExpression(member.Type, filterCondition.Value); |
|
@ -152,13 +151,12 @@ namespace Win.Sfs.Shared.Filter |
|
|
if (propertyType.IsGenericType && |
|
|
if (propertyType.IsGenericType && |
|
|
propertyType.GetGenericTypeDefinition() == typeof(Nullable<>)) |
|
|
propertyType.GetGenericTypeDefinition() == typeof(Nullable<>)) |
|
|
{ |
|
|
{ |
|
|
var type = propertyType.GetGenericArguments()[0]; |
|
|
var objValue = new NullableConverter(propertyType).ConvertFromString(value); |
|
|
var objValue = type.IsEnum ? (Enum)Enum.Parse(type, value, true) : Convert.ChangeType(value, type); |
|
|
constant = Expression.Constant(objValue, propertyType); |
|
|
constant = Expression.Constant(new NullableConverter(propertyType).ConvertFrom(objValue)); |
|
|
|
|
|
} |
|
|
} |
|
|
else if (propertyType.IsEnum) |
|
|
else if (propertyType.IsEnum) |
|
|
{ |
|
|
{ |
|
|
var enumValue = (Enum?)Enum.Parse(propertyType, value, true); |
|
|
var enumValue = (Enum)Enum.Parse(propertyType, value, true); |
|
|
constant = Expression.Constant(enumValue); |
|
|
constant = Expression.Constant(enumValue); |
|
|
} |
|
|
} |
|
|
else |
|
|
else |
|
@ -177,11 +175,7 @@ namespace Win.Sfs.Shared.Filter |
|
|
|
|
|
|
|
|
return constant; |
|
|
return constant; |
|
|
} |
|
|
} |
|
|
public static T? CreateNullable<T>(this T item) where T : struct |
|
|
|
|
|
{ |
|
|
|
|
|
T? v = (T?)(new NullableConverter(typeof(T?))).ConvertFrom(item); |
|
|
|
|
|
return v; |
|
|
|
|
|
} |
|
|
|
|
|
private static Expression<Func<T, bool>> GetExpressionLikeMethod<T>(string methodName, |
|
|
private static Expression<Func<T, bool>> GetExpressionLikeMethod<T>(string methodName, |
|
|
FilterCondition filterCondition) |
|
|
FilterCondition filterCondition) |
|
|
{ |
|
|
{ |
|
|