问题:此中的num=>num 如何用ParameterExpression方式表示呢?
  
如下例子: 
             List<decimal> decimals =
                new List<decimal> { 6.2m, 8.3m, 0.5m, 1.3m, 6.3m, 9.7m };
          
            IEnumerable<decimal> query =
                decimals.AsQueryable()
                .OrderByDescending(num => num, new SpecialComparer());            foreach (decimal num in query)
                Console.WriteLine(num);            //如何通过Expression直接返回参数值? 效果等同于num=>num
            ParameterExpression param = Expression.Parameter(typeof(decimal),"num");
            var orderby = Expression.Lambda<Func<decimal>>(??, param);            var query =
                decimals.AsQueryable()
                .OrderByDescending(orderby, new SpecialComparer());

解决方案 »

  1.   

     new List<decimal> { 6.2m, 8.3m, 0.5m, 1.3m, 6.3m, 9.7m };
    ===
    你想得到什么样的值?
      

  2.   

    ParameterExpression number = Expression.Parameter(typeof(int), "number");
    ParameterExpression[] parameters = new ParameterExpression[] { number };
    BinaryExpression body = Expression.GreaterThan(number, zero);
    Expression<Func<int>> predicate = Expression.Lambda<Func<int>>(body, parameters);
      

  3.   


    谢谢你的回复,但是我测试之后 发现这种方式存在问题。首先 decimal类型的 我传入的一个decimal参数 直接要返回这个参数值 转换为整型那怎么行呢?
    第二 你执行与0比较大小,那假如里面有负数 0 等等呢? 
    第三 如果是字符串传递或者是字节或者是其他类型等等作为参数传递 那又如何呢?其实如果返回类型里面的属性倒是比较好处理的 可以配合反射搞出来,但是现在主要是系统类型我没法直接返回参数?  再请赐教...
      

  4.   


    得到的结果是: 传递 List数组的值 作为参数 然后返回这个值 ,这种方式最后作为排序OrderByDescending的条件