基本信息
源码名称:基于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;
;
}
}