From 695571c6009ecbc12e7d4a4fb147df7967a1260e Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期一, 07 七月 2025 20:21:19 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/MeiRuiAn/HuaiAn
---
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Utilities/LambdaExtensions.cs | 65 ++++++++++++++++++++++++++++++++
1 files changed, 65 insertions(+), 0 deletions(-)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Utilities/LambdaExtensions.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Utilities/LambdaExtensions.cs"
index 459408a..a8e0099 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Utilities/LambdaExtensions.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Utilities/LambdaExtensions.cs"
@@ -179,5 +179,70 @@
return p => false;
}
+
+ public static Expression<Func<TEntity, bool>> GetWhereExpression<TEntity>(this PropertyInfo propertyInfo, object propertyValue, ParameterExpression parameter, LinqExpressionType expressionType)
+ {
+ Type proType = propertyInfo.PropertyType;
+ ConstantExpression constant = proType.ToString() == "System.String"
+ ? Expression.Constant(propertyValue) : Expression.Constant(propertyValue.ToString().ChangeType(proType));
+
+ // DateTime鍙�夋嫨浜嗘棩鏈熺殑鏃跺�欒嚜鍔ㄥ湪缁撴潫鏃ユ湡鍔犱竴澶╋紝淇DateTime绫诲瀷浣跨敤鏃ユ湡鍖洪棿鏌ヨ鏃犳硶鏌ヨ鍒扮粨鏉熸棩鏈熺殑闂
+ if ((proType == typeof(DateTime) || proType == typeof(DateTime?)) && expressionType == LinqExpressionType.LessThanOrEqual && propertyValue.ToString().Length == 10)
+ {
+ constant = Expression.Constant(Convert.ToDateTime(propertyValue.ToString()).AddDays(1));
+ }
+ parameter = parameter ?? Expression.Parameter(typeof(TEntity), "b");
+ //鍒涘缓鑺傜偣鐨勫睘鎬=>p.name 灞炴�ame
+ MemberExpression memberProperty = Expression.PropertyOrField(parameter, propertyInfo.Name);
+ UnaryExpression member = Expression.Convert(memberProperty, constant.Type);
+ Expression<Func<TEntity, bool>> expression = p => false;
+ switch (expressionType)
+ {
+ //p=>p.propertyName == propertyValue
+ case LinqExpressionType.Equal:
+ expression = Expression.Lambda<Func<TEntity, bool>>(Expression.Equal(member, constant), parameter);
+ break;
+ //p=>p.propertyName != propertyValue
+ case LinqExpressionType.NotEqual:
+ expression = Expression.Lambda<Func<TEntity, bool>>(Expression.NotEqual(member, constant), parameter);
+ break;
+ // p => p.propertyName > propertyValue
+ case LinqExpressionType.GreaterThan:
+ expression = Expression.Lambda<Func<TEntity, bool>>(Expression.GreaterThan(member, constant), parameter);
+ break;
+ // p => p.propertyName < propertyValue
+ case LinqExpressionType.LessThan:
+ expression = Expression.Lambda<Func<TEntity, bool>>(Expression.LessThan(member, constant), parameter);
+ break;
+ // p => p.propertyName >= propertyValue
+ case LinqExpressionType.ThanOrEqual:
+ expression = Expression.Lambda<Func<TEntity, bool>>(Expression.GreaterThanOrEqual(member, constant), parameter);
+ break;
+ // p => p.propertyName <= propertyValue
+ case LinqExpressionType.LessThanOrEqual:
+ expression = Expression.Lambda<Func<TEntity, bool>>(Expression.LessThanOrEqual(member, constant), parameter);
+ break;
+ // p => p.propertyName.Contains(propertyValue)
+ // p => !p.propertyName.Contains(propertyValue)
+ case LinqExpressionType.Contains:
+ case LinqExpressionType.NotContains:
+ MethodInfo method = typeof(string).GetMethod("Contains", new[] { typeof(string) });
+ constant = Expression.Constant(propertyValue, typeof(string));
+ if (expressionType == LinqExpressionType.Contains)
+ {
+ expression = Expression.Lambda<Func<TEntity, bool>>(Expression.Call(member, method, constant), parameter);
+ }
+ else
+ {
+ expression = Expression.Lambda<Func<TEntity, bool>>(Expression.Not(Expression.Call(member, method, constant)), parameter);
+ }
+ break;
+ default:
+ //
+ expression = p => false;
+ break;
+ }
+ return expression;
+ }
}
}
--
Gitblit v1.9.3