如何获取此 OrderBy 表达式树并使其接受任何订单类型(int、float、string、boolean 等)?是否可以?现在它的类型转换为仅字符串。我应该在调用方法时将所有内容都转换为字符串,还是有更好的方法来使更通用?
我只需要 T 类中这个 propertyName 的数据类型,这样我就可以将其放在下面的函数中。测试这些,还没有运气。
成员类型、GetType()、字段类型
Net Core Linq 中的 OrderBy 表达式树用于扩展方法
创建表达式:
public static class ExpressionTreesExtesion
{
public static Expression<Func<T,string>> OrderByExpression<T>(this IEnumerable<T> enumerable, string propertyName)
{
var propInfo = typeof(T).GetProperty(propertyName);
var collectionType = typeof(T);
var parameterExpression = Expression.Parameter(collectionType, "x");
var propertyAccess = Expression.MakeMemberAccess(parameterExpression, propInfo);
var orderExpression = Expression.Lambda<Func<T,string>>(propertyAccess, parameterExpression);
return orderExpression;
}
}
如何致电:
var ProductExpression = records.OrderByExpression("Name");
var result = records.OrderBy(ProductExpression.Compile());
ProductExpression.Compile() above will compile into x => x.Name, where column name is supplied at the run-time
九州编程
相关分类