【发布时间】:2012-01-15 06:12:18
【问题描述】:
深入了解 C#:
并非所有 lambda 表达式都可以转换为表达式树。你 不能用一组语句转换 lambda(即使只有一个 return 语句 ) 到表达式树中 --> 它必须是形式 只计算一个表达式。
由于 Linq-to-Object 语句不会转换为表达式树对象,因此与 Linq-to-Object 运算符一起使用的 lambda 表达式可以包含语句块
string[] count = { "one ", "two ", "three ", "four ", "five ", "six " };
IEnumerable<int> result = count.Select(item =>
{
Console.WriteLine(item);
return item.Length;
});
foreach (int i in result);
输出:
one two three four five six
我还没有开始学习 Linq-To-Sql 或 Linq-To-Entities,但我假设与在 IQueryable<T> 上运行的 LINQ 语句一起使用的 lambda 表达式只能包含一个表达式,因为只有单个表达式可以转换成表达式树吗?
谢谢
【问题讨论】: