我是Linq Expressions的新手。
我正在调用API,它暴露了以下重载方法:
CustomPaging<TEntity> GetAll(int index, int maxPage, Expression<Func<TEntity, int>> keySelector, OrderBy orderBy = OrderBy.Ascending);
CustomPaging<TEntity> GetAll(int index, int maxPage, Expression<Func<TEntity, int>> keySelector, Expression<Func<TEntity, bool>> predicate, OrderBy orderBy, params Expression<Func<TEntity, object>>[] useProperties)
我的目的是将“id”参数作为谓词的一部分传递,以便按传递的值进行过滤。
有些事情:
x => x.UserId.Equals(id)
我的问题 - 是否可以从API的方法签名中确定如何实现此过滤?
我玩过以下各种变化无济于事:
Expression<Func<Group, int>> myFunc = u => u.UserId == id
错误:无法将bool转换为int。
Func<Group, int> myFunc = g => g.UserId == id;
错误:无法从System.Func转换为 System.Linq.Expressions.Expression
我显然不太了解表达树,可以使用一些友好的指导。提前感谢任何见解。
答案 0 :(得分:0)
类型http://localhost/phpmyadmin/
的参数perdicate
是负责过滤的参数:
Expression<Func<TEntity, bool>>
您需要匹配Expression<Func<Group, bool>> myFunc = u => u.UserId == id;
而非<Group, bool>
最后的电话可以是:
<Group, int>
或:
var results = GetAll(someIndex, someMaxPage, x=> x.UserId, u => u.UserId == id);