基本信息
源码名称:基于Lambda的ORM原型
源码大小:0.20M
文件格式:.rar
开发语言:C#
更新时间:2015-08-31
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 1 元×
微信扫码支付:1 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
一个基于Lambda的ORM原型
内裤啊,没有实例
一个基于Lambda的ORM原型
内裤啊,没有实例
public void Resolve(Expression exp) { if (exp is BinaryExpression) { var binaryExpr = (BinaryExpression)exp; ConvertBinary(binaryExpr); } else if (exp is MemberExpression) { var memberExpr = (MemberExpression)exp; ConverMember(memberExpr); } else if (exp is MethodCallExpression) { var methodExpr = (MethodCallExpression)exp; ConvertMethod(methodExpr); } else if (exp is ConstantExpression) { var constantExpr = (ConstantExpression)exp; ConvertConstant(constantExpr); } } public Object ConvertConstant(ConstantExpression exp) { builder.Append(exp.Value); return exp.Value; } public void ConvertMethod(MethodCallExpression exp) { switch (exp.Method.Name) { case "Equals": { Resolve(exp.Object); builder.Append("="); Resolve(exp.Arguments[0]); } break; case "StartsWith": { Resolve(exp.Object); builder.Append("like '"); Resolve(exp.Arguments[0]); builder.Append("%'"); } break; case "EndWith": { Resolve(exp.Object); builder.Append("like '%"); Resolve(exp.Arguments[0]); builder.Append("'"); } break; case "Contains": { Resolve(exp.Object); builder.Append("like '%"); Resolve(exp.Arguments[0]); builder.Append("%'"); } break; case "ToString": { throw new NotSupportedException("Supported Method ToString"); } break; } } private void ConverMember(MemberExpression e) { builder.Append(e.Member.Name); } private void ConvertBinary(BinaryExpression e) { Expression left = e.Left; Expression right = e.Right; switch (e.NodeType) { case ExpressionType.And: { } break; case ExpressionType.Equal: { Resolve(left); builder.Append("="); Resolve(right); } break; case ExpressionType.AndAlso: { Resolve(left); builder.Append(" AND "); Resolve(right); } break; case ExpressionType.OrElse: { Resolve(left); builder.Append(" OR "); Resolve(right); } break; default: { } break; ; } }