1

我想知道是否有人可以向我解释检索的缺点

(Expression<Func<T, bool>>) Expression.Body

在运行时并将其作为字符串操作?

例如给出以下

public partial class Tests : Form
{
    public Tests()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        TestClass t = new TestClass();
        textBox1.Text = t.Evaluate(templates => templates.usable == true && templates.name == "tc1");
    }       
}

public class TestClass
{
    public string name { get; set; }
    public bool usable { get; set; }
}

public static class Helpers
{
    public static string Evaluate<T>(this T input,Expression<Func<T, bool>> Expression) where T : class
    {

        return Expression.Parameters.Single().Name + " " + Expression.Body;

    }
}

返回

templates ((templates.usable == True) AndAlso (templates.name == "tc1"))

我想知道检索这个然后通过正则表达式解析它可能会出现什么样的性能问题

回答为什么?我一直在玩 Dapper,但没有一个预先存在的扩展(我见过)吸引我

例如,我希望能够以与 EF 类似的方式对其进行操作

_repo.Select(templates=>templates.usable== true && templates.id == templateId);
4

1 回答 1

1

感谢您推动使用实际表达式而不是解析文本。对于任何感兴趣的人,我已经发布了指向我的 sqlexpression 项目初稿的链接。谷歌代码 - SqlExpression.cs

创建的参数是来自 Dapper 的 DynamicParameters,但可以轻松交换为标准 sql 参数

还没有做很多测试,但查询在这个阶段似乎表现得相当好

于 2012-06-23T10:30:46.237 回答