LINQ之路 7:子查询、创建策略和数据转换(要点笔记)
2024-08-29 23:34:59
匿名类型
上面我们自己定义了类型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仍然可见
最新文章
- 前端开发自学之JavaScript——显示当前时间
- 关于cookie 取不到值的问题
- Web前端性能优化教程07:精简JS 移除重复脚本
- 9、C#基础整理(多维数组)
- UVa 12265 (单调栈) Selling Land
- iOS开发中一些常用的方法
- CopyU!下一次更新将增加对设备厂商及型号的识别!
- 什么是RAW数据源
- 服务器忘记mysql密码怎么修改?
- 推送一个已有的代码到新的 gerrit 服务器
- [js高手之路]html5 canvas动画教程 - 边界判断与反弹
- web信息泄露注意事项
- HTTP协议7之Cookie--转
- Chapter 4 Invitations——22
- Btrace 拦截构造函数,同名函数
- prop与attr
- spring学习 四 对象的创建
- 浅析Web数据存储-Cookie、UserData、SessionStorage、WebSqlDatabase
- Windows下测量cpu利用率的类
- H5移动端视频问题(苹果全屏播放问题等)