排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256
50010702506256
欢迎加群交流技术
分类:
.NET
一个条件类的表达式树的body一般分为三个部分。左边的属性名,中间的判断符号,右边的值。
如图: 
我们要把这类的表达式树解析成sql语句条件,只需要拿到左边,中间,右边的值就行
比如这样的一个
Expression<Func<UserInfo, bool>> func = a => a.UserName == "xx";
我们解析成where UserName='xx' 即可。代码如下,分别解析左边,中间,右边即可
BinaryExpression binaryExpression = func.Body as BinaryExpression;
//处理左边的内容
MemberExpression memberExpression = binaryExpression.Left as MemberExpression;
string value = memberExpression.Member.Name;
string paramter = " where " + value;
//中间
if (binaryExpression.NodeType == ExpressionType.Equal)
{
paramter += " = ";
}
if (binaryExpression.NodeType == ExpressionType.GreaterThan)
{
paramter += " > ";
}
if (binaryExpression.NodeType == ExpressionType.GreaterThanOrEqual)
{
paramter += " >= ";
}
if (binaryExpression.NodeType == ExpressionType.LessThan)
{
paramter += " < ";
}
//右边
ConstantExpression constantExpression = binaryExpression.Right as ConstantExpression;
object right = "'" + constantExpression.Value + "'";
paramter += right;效果如下:
解析的时候如果不知道,左边,右边具体是什么类型,可以直接调试的时候进行看类型就行
比如你不知道这里的Left,Right什么类型,点击进去看就知道了
比如我们看看Left的,明显就是Member类型
看到类型就可以转换成具体的类型,就很方便解析了,转换成MemberExpression即可
//处理左边的内容 MemberExpression memberExpression = binaryExpression.Left as MemberExpression; string value = memberExpression.Member.Name;
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)
评价