In order to define a variable inside a linq expression, you can use the let keyword. This is usually done in order to store the results of intermediate sub-queries, for example:

int[] numbers = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

var aboveAverages = from number in numbers
                   let average = numbers.Average()
                   let nSquared = Math.Pow(number,2)
                   where nSquared > average
                   select number;

Console.WriteLine("The average of the numbers is {0}.", numbers.Average());

foreach (int n in aboveAverages)
{
	Console.WriteLine("Query result includes number {0} with square of {1}.", n, Math.Pow(n,2));
}

Output:

The average of the numbers is 4.5. Query result includes number 3 with square of 9. Query result includes number 4 with square of 16. Query result includes number 5 with square of 25. Query result includes number 6 with square of 36. Query result includes number 7 with square of 49. Query result includes number 8 with square of 64. Query result includes number 9 with square of 81.

View Demo