LINQ Expressions Corps ToString

dapper lambda linq regex string

Question

Je me demande si quelqu'un peut m'expliquer les inconvénients de la récupération

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

au moment de l'exécution et fonctionne comme une chaîne?

par exemple compte tenu de ce qui suit

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;

    }
}

qui retourne

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

Je me demande quel genre de problèmes de performances peuvent survenir en récupérant ceci et en analysant ensuite une expression Regex

en réponse à la question pourquoi? J'ai joué un peu avec Dapper, mais aucune des extensions préexistantes (que j'ai vues) ne me plaisait

Je voudrais pouvoir y travailler de la même manière que EF par exemple

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

Réponse populaire

Merci pour le coup de pouce à utiliser l'expression réelle plutôt que d'analyser le texte. pour toute personne intéressée, j'ai posté un lien vers la première version de mon projet sqlexpression. Code Google - SqlExpression.cs

Les paramètres créés sont DynamicParameters de Dapper mais peuvent facilement être échangés pour un paramètre standard de SQL

n'ont pas encore fait beaucoup de tests, mais la requête semble fonctionner raisonnablement bien à ce stade




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi