src/02_Data/Data.Core/Internal/ExpressionResolver.cs
(开头部分) 31KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Globalization;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using Mkh.Data.Abstractions.Adapter;
using Mkh.Data.Abstractions.Queryable;
using Mkh.Data.Core.Extensions;
using Mkh.Data.Core.Internal.QueryStructure;
namespace Mkh.Data.Core.Internal;
/// <summary>
/// 表达式解析器
/// </summary>
public class ExpressionResolver
{
public static string Resolve(QueryBody queryBody, LambdaExpression expression, IQueryParameters parameters)
{
if (expression == null)
return string.Empty;
var sqlBuilder = new StringBuilder();
Resolve(queryBody, expression, expression, sqlBuilder, parameters);
return sqlBuilder.ToString();
}
public static void Resolve(QueryBody queryBody, Expression expression, LambdaExpression fullLambda, StringBuilder sqlBuilder, IQueryParameters parameters)
{
switch (expression.NodeType)
{
case ExpressionType.Lambda:
Resolve(queryBody, (expression as LambdaExpression)!.Body, fullLambda, sqlBuilder, parameters);
break;
case ExpressionType.Convert:
case ExpressionType.ConvertChecked:
Resolve(queryBody, (expression as UnaryExpression)!.Operand, fullLambda, sqlBuilder, parameters);
break;
case ExpressionType.Add:
case ExpressionType.AddChecked:
case ExpressionType.Subtract:
case ExpressionType.SubtractChecked:
case ExpressionType.Multiply:
case ExpressionType.MultiplyChecked:
case ExpressionType.Divide:
case ExpressionType.Modulo:
case ExpressionType.And:
case ExpressionType.AndAlso:
case ExpressionType.Or:
case ExpressionType.OrElse:
case ExpressionType.LessThan:
case ExpressionType.LessThanOrEqual:
case ExpressionType.GreaterThan:
case ExpressionType.GreaterThanOrEqual:
case ExpressionType.Equal:
后面还有 852 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
