Code equivalent to the 'let' keyword in chained LINQ extension method calls

c#, extension-methods, linq, linq-to-objects

Solution

Let doesn't have its own operation; it piggy-backs off of `Select`. You can see this if you use "reflector" to pull apart an existing dll.

it will be something like:

var result = names
        .Select(animalName => new { nameLength = animalName.Length, animalName})
        .Where(x=>x.nameLength > 3)
        .OrderBy(x=>x.nameLength)
        .Select(x=>x.animalName);

Problem

Using the C# compilers query comprehension features, you can write code like: ``` var names = new string[] { "Dog", "Cat", "Giraffe", "Monkey", "Tortoise" }; var result = from animalName in names let nameLength = animalName.Length where nameLength > 3 orderby nameLength select animalName; ``` In the query expression above, the `let` keyword allows a value to be passed forward to the where and orderby operations without duplicate calls to `animalName.Length`. What is the equivalent set of LINQ extension method calls that achieves what the "let" keyword does here?

Original source