你无法这么做,比如这个:
public bool TestMethod(string s) { //在这里我发起一个HttpRequest到另外一个服务器然后做一些事情 //最后return一个bool值 } Func<string, bool> predicate = new Func<string, bool>(a.TestMethod); //接下来你如何将TestMethod里做的事情解析为T-SQL语句并执行?
实际上LINQ系列的ORM里处理的那些lambda表达式并不是Func<T, R>系列,而是对应的Expression<Func<T, R>>系列。通过解析ExpressionTree(如何解析请自行查阅相关文章),将“可以转成SQL语句”的表达式解析并执行。Expression<Func<T,R>>可以被编译成为Func<T,R>,反之则不行(至少目前不可以).
语法糖,是封装好的委托。