3 回答
TA贡献1824条经验 获得超8个赞
抛开问题内容,对于 Expression<Func<TEntity, object>>应传一个参数为TEntity 返回值为object的表达式,直接返回需要的对象即可。
对于问题内容中的方法,可以这样调用
//假如我有个用户实体类 public class UserInfoEntity { public string Id { get ; set ; } public string UserName{ get ; set ; } } //调用 static void Main( string [] args) { List<UserInfoEntity> lst_u = Search((u) => u.UserName); } |
TA贡献1845条经验 获得超8个赞
Expression<Func<TEntity,object>> 是表达式数 ,里面的Func<TEntity,object>是一个委托(同delegate)Func是一个有返回值的委托,在这个方法里 TEntity 是需要传入的参数 也就是一个实体,返回值是object类型的, Expression<Func<TEntity, object> 传参数是实体对象,返回值是object类型的,Expression<Func<TEntity, bool>> 传参数也是实体对象,返回值是bool类型的
TA贡献1802条经验 获得超5个赞
Expression<Func<TEntity, object>>
表示返回Object的lamda表达式,如果你想要理解这个,那你需要学习Linq
比如对于这样一个lamda表达式
蓝色方框就是你要写的参数;箭头符号=>左边的C表示输入参数,右边为你要做的操作
在这里c的类型为DateTime,由表达式的第一个类型参数决定;返回类型为Object由最后一个类型参数决定(这里DateTime可以隐式转换为Object),所以这个表达式的意思就是把任何一个DateTime+1小时
它是一个以DateTime为输入参数,返回Object的表达式。
回到你的问题,你这里的参数可以可以如下般传入
PS:因为你这个Search调用的是Select方法,所以Select能怎么用,你这里就能怎么用
比如说对于Select方法,它的方法签名是这样的
public static IEnumerable<TResult> Select<TSource, TResult>( this IEnumerable<TSource> source, Func<TSource, TResult> selector ) |
在用的时候可以
var squares = new List<Int>() {1,2,3,4,5,6,7}; var result=squares.Select(c=>c*c); foreach ( int num in squares) { Console.WriteLine(num); } /* 结果输出如下 1 4 9 16 25 36 49 */ |
c就表示TSouce(就是squares 中的每一个元素),类型是Int
返回的结果就是TResult填充的序列,每一个值为TSouce*TSouce
- 3 回答
- 0 关注
- 687 浏览
添加回答
举报