Une expression lambda C # peut-elle contenir plusieurs instructions?

Une expression lambda C # peut-elle inclure plusieurs instructions?

(Modifier: comme indiqué dans plusieurs réponses ci-dessous, cette question portait à l’origine sur les “lignes” plutôt que sur les “déclarations”.)

Sûr:

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

Vous pouvez mettre autant de lignes que vous voulez dans une expression lambda; C # ignore les nouvelles lignes.

Vous avez probablement voulu poser des questions sur plusieurs déclarations .

Plusieurs instructions peuvent être placées entre accolades.

Voir la documentation .

(Je suppose que vous parlez de plusieurs déclarations plutôt que de plusieurs lignes.)

Vous pouvez utiliser plusieurs instructions dans une expression lambda en utilisant des accolades, mais seule la syntaxe qui n’utilise pas d’accolades peut être convertie en arbre d’expression:

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

From Lambda Expressions (Guide de programmation C #) :

Le corps d’une déclaration lambda peut être constitué d’un nombre quelconque d’instructions; cependant, dans la pratique, il n’y en a généralement pas plus de deux ou trois.