有一个查询:query.OrderByDescending(x => x.Student.Id)
条件多了一层,属性的属性
使用表达式:
//创建表达式变量参数
var parameter = Expression.Parameter(typeof(T));
//根据属性名获取属性
var property = typeof(T).GetProperty(orderBy.Key);
var propertyAccess = Expression.MakeMemberAccess(parameter, property);
var orderByExp = Expression.Lambda(propertyAccess, parameter);
var resultExp = Expression.Call(...)
query.Provider.CreateQuery<T>(resultExp);
请问使用这种方法如何访问x.Student.Id,上面这种只能访问到x.Student属性,有没有大佬知道
x是一个匿名类型,new {Student=xxx,Class=xxx}类似这样
试试 https://stackoverflow.com/a/32921443/5989202 中方法:
// Get property of root object
MemberExpression member = Expression.Property(param, field);
// Get property of property
MemberExpression memberField = Expression.PropertyOrField(member, complexProperty);
这个几天前就找到方法了,方法和你这个差不多,不过也还是要谢谢你!
你是要根据Student.Id排序?
是的
@从前的倒影: 有源码没有?我这边定义的实体可以排序。
建议改进一下排版,支持 markdown 语法
– dudu 3年前