C#lambdaexpression式可以有多个语句吗?

一个C#lambdaexpression式可以包含多个语句吗?

(编辑:如下面几个答案中所引用的,这个问题最初是关于“行”而不是“语句”的问题。)

当然:

List<String> items = new List<string>(); var results = items.Where(i => { bool result; if (i == "THIS") result = true; else if (i == "THAT") result = true; else result = false; return result; } ); 

你可以在lambdaexpression式中放置尽可能多的换行符; C#忽略换行符。

你可能打算询问多个陈述

多个语句可以用大括号包装。

请参阅文档 。

(我假设你真的在说多条语句,而不是多行。)

您可以在使用大括号的lambdaexpression式中使用多个语句,但是只有不使用大括号的语法才能转换为expression式树:

 // Valid Func<int, int> a = x => x + 1; Func<int, int> b = x => { return x + 1; }; Expression<Func<int, int>> c = x => x + 1; // Invalid Expression<Func<int, int>> d = x => { return x + 1; }; 
 Func<string, bool> test = (name) => { if (name == "yes") return true; else return false; } 

从Lambdaexpression式(C#编程指南) :

lambdaexpression式的主体可以包含任意数量的语句; 但实际上通常不超过两三个。