【问题标题】:iQueryable and Expression Tree [closed]iQueryable 和表达式树 [关闭]
【发布时间】:2010-12-07 03:48:40
【问题描述】:

谁能通过提供一个非常基本的示例来解释我如何在 C# 中使用 (1) iQueryable (2) 表达式树?两者不相关,我不想提出两个单独的问题,而是希望在一个问题中消除我的疑问。

非常感谢。

【问题讨论】:

    标签: c# lambda expression-trees iqueryable


    【解决方案1】:

    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.

    【讨论】:

    【解决方案2】:

    我通常不喜欢仅仅链接东西,但这是一个更复杂的话题。我建议观看此视频:

    http://channel9.msdn.com/shows/Going+Deep/Erik-Meijer-and-Bart-De-Smet-LINQ-to-Anything/

    Erik 很好地解释了这一点,并给出了一个简洁的 Linq to Simpsons 示例。

    【讨论】:

      【解决方案3】:
      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);
      

      【讨论】:

        猜你喜欢
        • 2017-05-30
        • 1970-01-01
        • 2015-08-20
        • 2020-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-29
        相关资源
        最近更新 更多