zoukankan      html  css  js  c++  java
  • LINQ之路 7:子查询、创建策略和数据转换(要点笔记)

    匿名类型

    上面我们自己定义了类型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 > 2                                         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 > 2                         select n;   //正是因为使用了let,此时n仍然可见
  • 相关阅读:
    批处理文件 bat
    批处理文件 搜索指定路径文件拷贝出去
    css 表格
    jquery面试题
    indexedDB使用
    页面加载及优化
    Ajax,restful/Rest JSON和JSONP
    数组去重
    删除数组里大于3的元素
    判断一个字符串中出现次数最多的字符,统计这个次数
  • 原文地址:https://www.cnblogs.com/zihunqingxin/p/3207680.html
Copyright © 2011-2022 走看看