De C# en profundidad:conversión de expresión lambda en un árbol de expresión
No todas las expresiones lambda se pueden convertir a los árboles de expresión. Usted no puede convertir un lambda con un bloque de instrucciones (incluso una sola declaración de retorno ) en un árbol de expresiones -> tiene que estar en el formato que solo evalúa una sola expresión.
Dado que las declaraciones-LINQ a objetos no consigue convertir en objetos de árbol de expresión, las expresiones lambda utilizados con los operadores de LINQ a objetos pueden contener un bloque de instrucciones
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);
SALIDA:
one two three four five six
todavía no he comenzado a aprender LINQ to SQL o LINQ a Entidades, pero supongo que las expresiones lambda utilizados con las declaraciones de LINQ que operan en IQueryable<T>
tan sólo puede contener una sola expresión , debido a la restricción de que solo una sola expresión se puede convertir en un árbol de expresiones?
Gracias
Ahora, ¿qué demonios sabrías * sobre algo mencionado en ** C# en profundidad **? Oh no importa. –
muchas gracias a ambos – AspOnMyNet
@Jon: de repente me di cuenta de cuán relacionada está esta pregunta con la de http://stackoverflow.com/questions/8405423/do-at-compile-time-linq-to-objects- statements-also-get-translated-into-expressio * wink wink * – AspOnMyNet