问题:此中的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());
如下例子:
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());
===
你想得到什么样的值?
ParameterExpression[] parameters = new ParameterExpression[] { number };
BinaryExpression body = Expression.GreaterThan(number, zero);
Expression<Func<int>> predicate = Expression.Lambda<Func<int>>(body, parameters);
谢谢你的回复,但是我测试之后 发现这种方式存在问题。首先 decimal类型的 我传入的一个decimal参数 直接要返回这个参数值 转换为整型那怎么行呢?
第二 你执行与0比较大小,那假如里面有负数 0 等等呢?
第三 如果是字符串传递或者是字节或者是其他类型等等作为参数传递 那又如何呢?其实如果返回类型里面的属性倒是比较好处理的 可以配合反射搞出来,但是现在主要是系统类型我没法直接返回参数? 再请赐教...
得到的结果是: 传递 List数组的值 作为参数 然后返回这个值 ,这种方式最后作为排序OrderByDescending的条件