首页 新闻 搜索 专区 学院

EF Core 表达式的问题,高手请进!!!

0
悬赏园豆:30 [已解决问题] 解决于 2021-03-01 12:11

有一个查询: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}类似这样

从前的倒影的主页 从前的倒影 | 初学一级 | 园豆:53
提问于:2021-02-26 15:54

建议改进一下排版,支持 markdown 语法

dudu 3个月前
< >
分享
最佳答案
1

试试 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);
收获园豆:30
dudu | 高人七级 |园豆:37795 | 2021-02-26 21:17

这个几天前就找到方法了,方法和你这个差不多,不过也还是要谢谢你!

从前的倒影 | 园豆:53 (初学一级) | 2021-03-01 12:10
其他回答(1)
0

你是要根据Student.Id排序?

杨jian | 园豆:214 (菜鸟二级) | 2021-02-26 16:55

是的

支持(0) 反对(0) 从前的倒影 | 园豆:53 (初学一级) | 2021-02-26 16:56

@从前的倒影: 有源码没有?我这边定义的实体可以排序。

支持(0) 反对(0) 杨jian | 园豆:214 (菜鸟二级) | 2021-02-26 17:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册