应用场景:
在查询表达式中,存储子表达式的结果有时颇有用,这样能够在随后的子句中使用。 能够使用 let 关键字完成这一工做,该关键字能够建立一个新的范围变量,而且用您提供的表达式的结果初始化该变量。 一旦用值初始化了该范围变量,它就不能用于存储其余值。 但若是该范围变量存储的是可查询的类型,则能够对其进行查询。spa
示例代码:code
using System; using System.Linq; namespace UseLet { class Program { static void Main() { string[] strings = { "A penny saved is a penny earned.", "The early bird catches the worm.", "The pen is mightier than the sword." }; var earlyBirdQuery = from sentence in strings let words = sentence.Split(' ') from word in words let w = word.ToLower() where w[0] == 'a' || w[0] == 'e' || w[0] == 'i' || w[0] == 'o' || w[0] == 'u' select word; foreach (var v in earlyBirdQuery) { Console.WriteLine("\"{0}\" starts with a vowel", v); } Console.WriteLine("Press any key to exit"); Console.ReadLine(); } } }
从上面效果能够看出子句let的做用。若是不使用 let,则必须在 where 子句的每一个谓词中调用 ToLower,而且let能够保存from字句中的变量来使用。orm