日期:2014-05-20  浏览次数:20843 次

求Expression<Func<模型类型, 返回类型>>的解释,急急急,谢谢谢谢谢啦
有一个地方
 IQueryable<Client> clients = Client.Find(x => x.userName == approvalName)
                        .AsQueryable<Client>().OrderBy(a => a.applyTime);
调用了下面的方法
 public static IList<Client> Find(Expression<Func<Client, bool>> expression) {
            
            var repo = GetRepo();
            return repo.Find(expression).ToList();
        }
我一直不理解的地方
1、转入find方法的参数x => x.userName == approvalName 中的x代表什么是clients么?
2、其中x => x.userName == approvalName是一个什么类型?具体的描述一下好吗?
3、而Expression<Func<Client, bool>> 表达式树干啥用的?什么时候用,怎么用能举个例子么?

谢谢大侠,感激不尽!
------解决方案--------------------
1. x代表什么是Client. Client是Func<Client, bool>中的参数,bool是Func<Client, bool>返回类型。最起码你需要知道Func<Client, bool>是代理(Delegate)。 
2. 表达式x.userName == approvalName返回的是bool类型,正好匹配Func<Client, bool> 的返回类型 
3. Expression 需要知道是代表代码就行了,它是个Generic类型,type parameter 是个Delegate:Func<Client, bool>

补充以下:你提的问题很好,但已经不是C#入门问题了。希望你通读C#,就什么都知道了。
------解决方案--------------------
学习一下lamda表达式你就知道了,没有那么深奥,只是表现形式比较怪异