在 c# 中将表达式> 转换为字符串,反之亦然

本文关键字:转换 字符串 反之亦然 bool 表达式 func | 更新日期: 2023-09-27 18:35:20

我想将Expression<Func<Loan, bool>>转换为字符串,反之亦然。 我能做到吗? 如何实现ConvertStringToExpression方法?

internal class Program
{
    public class Loan
    {
        public bool IsActive { get; set; }
    }
    private static void Main(string[] args)
    {
        Expression<Func<Loan, bool>> expression = l => !l.IsActive;
        var expStr = ConvertExpressionToString(expression);
        var exp = ConvertStringToExpression(expStr);
    }
    public static string ConvertExpressionToString(Expression<Func<Loan, bool>> expression)
    {
        //return ???
        throw new NotImplementedException();
    }
    public static string ConvertStringToExpression(string expression)
    {
        //return ???
        throw new NotImplementedException();
    }
}

在 c# 中将表达式<func<T、bool>> 转换为字符串,反之亦然

你可以使用DynamicLinq库,就像很久以前ScottGu的博客中详细介绍的那样。该库有一个类ExpressionParser,其中包含解析框架的所有组件,用于解析字符串表达式并将其转换回Expression

这是用法之一:

    public static Expression Parse(Type resultType, string expression, params object[] values)
    {
        ExpressionParser parser = new ExpressionParser(null, expression, values);
        return parser.Parse(resultType);
    }

我在这里为单个文件库创建了一个要点。但您也可以在此处下载完整内容。