da C# in profondità:Conversione espressione lambda in un albero di espressione
Non tutte le espressioni lambda possono essere convertiti in alberi di espressione. È impossibile convertire un lambda con un blocco di istruzioni (anche solo una dichiarazione di ritorno ) in un albero di espressione -> deve essere nel formato che valuta solo una singola espressione.
Dal dichiarazioni LINQ to Object non ottengono convertiti in oggetti albero di espressione, le espressioni lambda utilizzati con gli operatori LINQ to Object possono contenere un blocco di istruzioni
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);
USCITA:
one two three four five six
non ho ancora iniziato a studiare LINQ to SQL o LINQ to Entities, ma suppongo espressioni lambda utilizzati con le dichiarazioni LINQ che operano su IQueryable<T>
può sempre e solo contenere una singola espressione , a causa del restristion che solo una singola espressione può essere convertita in un albero di espressione?
si
Ora, che diavolo * dovresti sapere di qualcosa menzionato in ** C# in Profondità **? Oh non importa. –
grazie mille – AspOnMyNet
@Jon: improvvisamente mi sono reso conto di quanto sia correlata questa domanda a http://stackoverflow.com/questions/8405423/do-at-compile-time-linq-to-objects- dichiarazioni-anche-ottenere-tradotto-in-expressio * wink wink * – AspOnMyNet