Créer un arbre d'expression en c #

c# expression-trees linq

Question

J'essaie de créer une requête dynamique en utilisant des arbres d'expression dans LINQ pour représenter la requête suivante

WageConstIns.Where(WageConstIn => WageConstIn.Serialno.ToString().StartsWith("2800"));

J'ai essayé de le créer comme suit:

WageConstIns.Where(WageConstIn => WageConstIn.Serialno.ToString().StartsWith("2800"));

Je reçois une erreur pendant l'exécution. Comment créer au mieux la requête ci-dessus à l'aide d'arborescences d'expression?

Réponse acceptée

Le moyen le plus simple serait de simplement le déclarer comme Expression<Func<...>>

public static class Program {
    public static void Main() {
        Expression<Func<DummyClass, Boolean>> predicate = WageConstIn => WageConstIn.Serialno.ToString().StartsWith("2800");
    }
}

Mais si vous voulez le construire en utilisant différentes expressions ...

public static class Program {
    public static void Main() {
        Expression<Func<DummyClass, Boolean>> predicate = WageConstIn => WageConstIn.Serialno.ToString().StartsWith("2800");
    }
}

La plupart des personnes [à qui j'ai parlé] qui entrent dans le domaine des arbres d'expression sont généralement satisfaites de la fonctionnalité System.Linq.Dynamic . (Ce qui peut être utilisé de différentes manières.) Cet extrait de code de pure génialité fait partie du code exemple de Visual Studio et se cache probablement déjà sur votre disque dur.




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