以下关于Expression<Func<TEntity, object>>该怎么写参数?

public virtual List<object> Search(Expression<Func<TEntity, object>> selector)
{
try
{
return dbSet.Cast<TEntity>().Select(selector).ToList();
}
catch (Exception ex) { throw ex; };
}

现在的方法如下,但是Expression<Func<TEntity, object>>这个参数传值是传什么?请教各位了。
还有同样类型的Expression<Func<TEntity, bool>>是传进什么参数?

互换的青春
浏览 688回答 3
3回答

有只小跳蛙

抛开问题内容,对于 Expression<Func<TEntity, object>>应传一个参数为TEntity 返回值为object的表达式,直接返回需要的对象即可。对于问题内容中的方法,可以这样调用&nbsp;//假如我有个用户实体类&nbsp;public&nbsp;class&nbsp;UserInfoEntity&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;Id&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;UserName{&nbsp;get;&nbsp;set;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//调用&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;void&nbsp;Main(string[]&nbsp;args)&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List<UserInfoEntity>&nbsp;lst_u&nbsp;=&nbsp;Search((u)&nbsp;=>&nbsp;u.UserName);&nbsp;&nbsp;&nbsp;&nbsp;}

精慕HU

Expression<Func<TEntity,object>> 是表达式数 ,里面的Func<TEntity,object>是一个委托(同delegate)Func是一个有返回值的委托,在这个方法里 TEntity 是需要传入的参数 也就是一个实体,返回值是object类型的, Expression<Func<TEntity, object> 传参数是实体对象,返回值是object类型的,Expression<Func<TEntity, bool>> 传参数也是实体对象,返回值是bool类型的

慕后森

Expression<Func<TEntity, object>>表示返回Object的lamda表达式,如果你想要理解这个,那你需要学习Linq比如对于这样一个lamda表达式蓝色方框就是你要写的参数;箭头符号=>左边的C表示输入参数,右边为你要做的操作在这里c的类型为DateTime,由表达式的第一个类型参数决定;返回类型为Object由最后一个类型参数决定(这里DateTime可以隐式转换为Object),所以这个表达式的意思就是把任何一个DateTime+1小时它是一个以DateTime为输入参数,返回Object的表达式。回到你的问题,你这里的参数可以可以如下般传入PS:因为你这个Search调用的是Select方法,所以Select能怎么用,你这里就能怎么用比如说对于Select方法,它的方法签名是这样的public&nbsp;static&nbsp;IEnumerable<TResult>&nbsp;Select<TSource,&nbsp;TResult>(this&nbsp;IEnumerable<TSource>&nbsp;source,Func<TSource, TResult>&nbsp;selector)在用的时候可以var&nbsp;squares&nbsp;=new&nbsp;List<Int>()&nbsp;{1,2,3,4,5,6,7};var&nbsp;result=squares.Select(c=>c*c);foreach&nbsp;(int&nbsp;num&nbsp;in&nbsp;squares){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(num);}/*结果输出如下&nbsp;1&nbsp;4&nbsp;9&nbsp;16&nbsp;25&nbsp;36&nbsp;49*/c就表示TSouce(就是squares 中的每一个元素),类型是Int返回的结果就是TResult填充的序列,每一个值为TSouce*TSouce
打开App,查看更多内容
随时随地看视频慕课网APP