2009-10-15 12 views
0

Quelqu'un peut-il m'expliquer comment utiliser (1) iQueryable (2) Expression Tree en C# en fournissant un exemple très basique? Les deux n'étant pas corrélés, au lieu de poser deux questions distinctes, je souhaite éclaircir mon doute en une seule question.iQueryable et l'arbre d'expression

Avancé Merci.

Répondre

3

Expression trees sont très simples à faire:

Expression<Func<int,int,int>> addExp = (a,b) => a + b; 

ou

var paramA = Expression.Parameter(typeof(int), "a"); 
var paramB = Expression.Parameter(typeof(int), "b"); 
Expression<Func<int,int,int>> addExp = Expression.Lambda<Func<int,int,int>>(
    Expression.Add(paramA, paramB), 
    paramA, 
    paramB); 

Construire un fournisseur IQueryable est assez difficile. Cependant, Matt Warren has a very indepth series that walks you through creating an IQueryable provider.

0
Expression<Func<T, string, PropertyInfo>> expression = (obj, str) => 
    obj.GetType() 
     .GetProperty(
      obj.GetType() 
       .GetProperties() 
       .ToList() 
       .Find(prop => 
        prop.Equals(str, StringComparison.OrdinalIgnoreCase).Name.ToString()); 
var obj = expression.Compile()(rowsData.FirstOrDefault(), sortIndex);