匿名类型

上面我们自己定义了类型TempProjectionItem来存放查询的结果。通过使用匿名类型,我们可以省去这种中间类型的定义,而由编译器来帮我们完成:

            var intermediate = from n in names                                select new                                {                                    Original = n,                                    Vowelless = Regex.Replace(n, "[aeiou]", "")                                };             IEnumerable<string> query = from item in intermediate                                         where item.Vowelless.Length >                                          select item.Original;

需要注意的是,因为匿名类型的确切类型名是由编译器自动产生的,因此intermediate的类型为:IEnumerable <random-compiler-produced-name> 。我们来声明这种类型的唯一方式就是使用var关键字,这时,var不只是更加简洁,而且也是必需的手段。

let关键字

let关键字让我们可以在保持范围变量的同时引入新的查询变量。比如上面的示例,我们可以用let关键字作如下改写:

            string[] names = { "Tom", "Dick", "Harry", "Mary", "Jay" };             var query = from n in names                         let Vowelless = Regex.Replace(n, "[aeiou]", "")                         where Vowelless.Length >                          select n;   //正是因为使用了let,此时n仍然可见

最新文章

  1. 前端开发自学之JavaScript——显示当前时间
  2. 关于cookie 取不到值的问题
  3. Web前端性能优化教程07:精简JS 移除重复脚本
  4. 9、C#基础整理(多维数组)
  5. UVa 12265 (单调栈) Selling Land
  6. iOS开发中一些常用的方法
  7. CopyU!下一次更新将增加对设备厂商及型号的识别!
  8. 什么是RAW数据源
  9. 服务器忘记mysql密码怎么修改?
  10. 推送一个已有的代码到新的 gerrit 服务器
  11. [js高手之路]html5 canvas动画教程 - 边界判断与反弹
  12. web信息泄露注意事项
  13. HTTP协议7之Cookie--转
  14. Chapter 4 Invitations——22
  15. Btrace 拦截构造函数,同名函数
  16. prop与attr
  17. spring学习 四 对象的创建
  18. 浅析Web数据存储-Cookie、UserData、SessionStorage、WebSqlDatabase
  19. Windows下测量cpu利用率的类
  20. H5移动端视频问题(苹果全屏播放问题等)

热门文章

  1. vue中使用elementUI中表格的v宽度,字体大小
  2. UML-SSD总结
  3. DNS服务器搭建与配置
  4. Tensorflow学习教程------实现lenet并且进行二分类
  5. 处理Ajax请求跨域问题
  6. BBS配置
  7. rsync实战(二)
  8. Vue其他指令-组件-全局-局部-组件的交互父传子
  9. Codeforces Round #556(Div.1)
  10. Momentum(动量)方法的python实现