2009-10-15 2 views
0

Может ли кто-нибудь объяснить мне, как использовать (1) iQueryable (2) Дерево выражений на C#, предоставляя очень простой пример? И то, и другое не коррелировано, вместо того, чтобы делать два отдельных вопроса, я хочу устранить свои сомнения в одном вопросе.iQueryable и дерево выражений

Расширенная благодарность.

ответ

3

Expression trees очень просто сделать:

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

или

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); 

Построение IQueryable провайдера довольно сложно. Однако 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); 
Смежные вопросы