class OrderUsersByLengthOfNameWithoutLet { static void Main()//不用let子句按照用户名称的长度来排序, //并显示名称和长度 { var query = from user in SampleData.AllUsers orderby user.Name.Length //user {User: Tim Trotter (Tester)} //{User: Tara Tutu (Tester)} //{User: Deborah Denton (Developer)} //{User: Darren Dahlia (Developer)} //{User: Mary Malcop (Manager)} //{User: Colin Carton (Customer)} select user.Name; //{User: Tara Tutu (Tester)} //query {System.Linq.Enumerable.WhereSelectEnumerableIterator<Model.User,string>} foreach (var name in query) //in 调用user.Name.Length //name //"Tara Tutu" //"Tim Trotter" //"Mary Malcop" //"Colin Carton" //"Darren Dahlia" //"Deborah Denton" { Console.WriteLine("{0}: {1}", name.Length, name); } } }
let子句和透明标识符
用let来进行中间计算
let子句引入了一个新的范围变量,它的值是基于其他范围变量。语法是机器简单
的:
let 标识符=表达式
假设查找字符串长度是一种非常昂贵的操作。现在,想象我们有一个非常奇异的
系统需求:按照用户名称的长度来排序,并显示名称及长度。
输出
9: Tara Tutu
11: Tim Trotter
11: Mary Malcop
12: Colin Carton
13: Darren Dahlia
14: Deborah Denton