c# Expression<Func<TEntity, object>>怎么写参数?

publicvirtualList<object>Search(Expression<Func<TEntity,object>>selector){try{returnd... 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>>是传进什么参数?
展开
 我来答
我的太阳圣西罗
2019-12-06
知道答主
回答量:7
采纳率:0%
帮助的人:4688
展开全部

抛开问题内容,对于 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);
    }


题主问题是 “Expression<Func<TEntity, object>>”怎么写参数而已,楼上说一堆屁话,不懂装懂就是百度知道的优良传统?

lihao5422
2018-05-29
知道答主
回答量:14
采纳率:100%
帮助的人:1.3万
展开全部
Expression<Func<TEntity,object>> 是表达式数 ,里面的Func<TEntity,object>是一个委托(同delegate)Func是一个有返回值的委托,在这个方法里 TEntity 是需要传入的参数 也就是一个实体,返回值是object类型的, Expression<Func<TEntity, object> 传参数是实体对象,返回值是object类型的,Expression<Func<TEntity, bool>> 传参数也是实体对象,返回值是bool类型的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我零0七
2021-01-19 · 热衷人生的有效性,关注自我
我零0七
采纳数:684 获赞数:11738

向TA提问 私信TA
展开全部

Expression<Func<TEntity, object>>

表示返回Object的lamda表达式,如果你想要理解这个,那你需要学习Linq

比如对于这样一个lamda表达式

蓝色方框就是你要写的参数;箭头符号=>左边的C表示输入参数,右边为你要做的操作

在这里c的类型为DateTime,由表达式的第一个类型参数决定;返回类型为Object由最后一个类型参数决定(这里DateTime可以隐式转换为Object),所以这个表达式的意思就是把任何一个DateTime+1小时

它是一个以DateTime为输入参数,返回Object的表达式。

回到你的问题,你这里的参数可以可以如下般传入

PS:因为你这个Search调用的是Select方法,所以Select能怎么用,你这里就能怎么用


以下答案写于2018-01-03

比如说对于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

追问
没怎么看懂,那我那个selector参数该用什么形式写?就你说这种形式吗?感觉不对劲的样子
追答
我已经说了,这是Linq
你先去学Linq
如果你知道lambda表达式怎么写,你就知道这个参数是什么
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式