2012-01-07 12 views
10

Soy nuevo en este campo de LINQ y una cosa estoy tratando de hacer.¿Cómo puedo combinar declaraciones múltiples en la expresión lambda?

Tengo un delegado de acción (escrito a continuación) que quiero convertir en expresión lambda.

 Action<string> custom = delegate(string name) 
      { 
       lstCutomers.Add(new Customer(name, coutries[cnt])); 
       name = name + " Object Created"; 
      }; 

¿Cuál será la expresión lambda para la misma. Solo quiero saber que puedo escribir varias declaraciones en lambda si no, entonces ¿Por qué?

Gracias de antemano.

+0

sí se puede escribir una sola instrucción o un bloque de declaración – Peeyush

+0

Salida: http://stackoverflow.com/questions/299703/delegate-keyword-vs- lambda-notación para una discusión detallada sobre la notación de delegado contra la notación Lambda. –

+0

Te das cuenta de que asignar un valor de nuevo a 'name' no va a tener ningún efecto, ¿verdad? Por lo tanto, su segunda afirmación es irrelevante y puede usar una lambda no declarativa. O bien has dado un mal ejemplo, o probablemente tienes un error en tu código ... –

Respuesta

18

No puede crear una expresión lambda , ya que no está devolviendo nada. Sin embargo, puede crear un comunicado lambda:

Action<string> custom = (name) => 
     { 
      lstCutomers.Add(new Customer(name, coutries[cnt])); 
      name = name + " Object Created"; 
     }; 
+0

que sería el método anónimo. Debe ser algo así como Acción customLambda = (nombre) => lstCutomers.Add (nuevo cliente (nombre, coutries [CNT]); name = nombre + "objeto creado";); Cuál no está compilando aún. –

+0

No estoy seguro, ya que 'Expression' siempre termina con un valor. Pensé que ''>> lo convertía en una expresión lambda (que se convierte en un método anónimo debido al tipo de personalización). –

+1

@DJ: desde [MSDN] (http://msdn.microsoft.com/en-us/library/bb397687.aspx) 'Una expresión lambda es una función anónima que puede contener expresiones y declaraciones' también, consulte la sección sobre Declaración Lambdas. He actualizado mi respuesta. –