Может ли выражение С# лямбда иметь более одного оператора?

Может ли выражение lambda С# включать более одного оператора?

(Edit: Как упоминалось в нескольких ответах ниже, этот вопрос первоначально задавался о "строках", а не "заявлениях".)

Ответ 1

Конечно:

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;
            }
        );

Ответ 2

В выражении лямбда вы можете поместить столько строк, сколько хотите; С# игнорирует символы новой строки.

Вероятно, вы хотели спросить о нескольких операторах.

Несколько операторов могут быть завернуты в фигурные скобки.

Смотрите документацию .

Ответ 3

(Я предполагаю, что вы действительно говорите о нескольких операторах, а не о нескольких строках.)

Вы можете использовать несколько операторов в выражении лямбда, используя фигурные скобки, но только синтаксис, который не использует фигурные скобки, можно преобразовать в дерево выражений:

// 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; };

Ответ 4

Func<string, bool> test = (name) => 
{
   if (name == "yes") return true;
   else return false;
}