Lambda expressions are two fold as Statement and Expression and they are got differ slightly b how we using curly braces in the code.
ie : If we are using the curly braces then it becomes a Statement lambda and vise versa.
Following is a small example to illustrate this.
ie : If we are using the curly braces then it becomes a Statement lambda and vise versa.
Following is a small example to illustrate this.
List<string> namesList = new List<string>(); IQueryable<string> query = namesList.AsQueryable(); namesList.Add("Priyal"); namesList.Add("Kasun"); namesList.Add("Praneeth"); namesList.Add("Primal"); string endsWithL1 = namesList.First(x => x.EndsWith("l")); string endsWithL2= query.First(x => x.EndsWith("l")); // endsWithL1 and endsWithL2 are now both 'two' as expected var foo1 = namesList.First(x => { return x.EndsWith("n"); }); //no error var foo2 = query.First(x => { return x.EndsWith("n"); }); //error var bar2 = query.First((Func<string, bool>)(x => { return x.EndsWith("n"); })); //no error
Note that List
This is why the foo1 gives a compile time error because we used curly braces and the it becomes a lambda statement. But we can can force the lambda to evaluate to a delegate as we did for the bar2.
No comments:
Post a Comment