Linq中Take、TakeWhile、Skip、SkipWhile的比较

///token();
            int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
            var first3Numbers = numbers.Take(3); //从第一个元素开始,获取三个 return的是前面的数
            Console.WriteLine("First 3 numbers:");
            foreach (var n in first3Numbers)
            {
                Console.WriteLine(n);//结果 5 4 1
            }
///TakeWhile()
            int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
            //在这里需要注意.使用TakeWhile获取小于6的元素,是从第一个元素开始,
            //一直到不满足其小于6这个条件为止.也就是执行到和9这个元素比较后,就结束比较了
            //可以想象一下执行过程.
            //5<6=true;4<6=true;1<6=true;3<6=true
            //9<6=false; 这里就停止继续比较了
            var firstNumbersLessThan6 = numbers.TakeWhile(n => n < 6);
            Console.WriteLine("First numbers less than 6:");
            foreach (var n in firstNumbersLessThan6)
            {
                Console.WriteLine(n);//结果为 5 4 1 3
            }
 ///Skip()
            ///
            /// int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
            var allButFirst4Numbers = numbers.Skip(4); //跳过前四个元素,获取后面所有的元素
            Console.WriteLine("All but first 4 numbers:");
            foreach (var n in allButFirst4Numbers)
            {
                Console.WriteLine(n);//结果9 8 6 7 2 0
            }
  //SkipWhile()
            int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
            //跳过不能被3整除的所有元素
            //这里和TakeWhiel又有些不一样。
            //TakeWhile遇到条件不满足的时候,就会return,
            //但是SkipWhile如果执行到能被三整除的数,那么其后面的元素就不会继续比较了
            //同样,想象一下执行过程
            //5%3!=0==true; 4%3!=0==true; 1%3!=0==true;
            //3%3!=0==false; 运行到这里的时候,后面的就不再比较.
            //所以输出结果中会有8、7、2、0这几个不满足条件的元素
            var allButFirst3Numbers = numbers.SkipWhile(n => n % 3 != 0);
            foreach (var n in allButFirst3Numbers)
            {
                Console.WriteLine(n);//结果3 9 8 6 7 2 0
            }
            Console.ReadKey();
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LINQ to SQL语句(1)之Where 2 Where操作 2 1.简单形式: 2 2.关系条件形式: 2 3.First()形式: 3 LINQ to SQL语句(2)之Select/Distinct 3 1.简单用法: 4 2.匿名类型 形式: 4 3.条件形式: 5 4.指定类 型形式: 6 5.筛选形式: 6 6.shaped形式(整形类型): 6 7.嵌套类型形式: 7 8.本地方法调用 形式(LocalMethodCall): 7 9.Distinct形式: 8 LINQ to SQL语句(3)之Count/Sum/Min/Max/Avg 9 1.简单形式: 9 2.带条件形 式: 9 1.简单形式: 10 2.映射形式: 10 3.元素 : 11 1.简单形式: 11 2.映射形式: 11 3.元素: 11 1.简单形式: 12 2.映射形式: 12 3.元素: 12 LINQ to SQL语句(4)之Join 13 Join操作符 13 1.一对多关系(1 to Many): 13 2.多对多关系(Many to Many): 14 3.自联接关系: 15 1.双向联接(Two way join): 15 2.三向联接(There way join): 16 3.左外部联接(Left Outer Join): 17 4.投影的Let赋值(Projected let assignment): 17 5.组合键(Composite Key): 18 6.可为null/不可为null的键关系 (Nullable/Nonnullable Key Relationship): 19 LINQ to SQL语句(5)之Order By 19 Order By操作 19 1.简单形式 19 2.带条件形式 20 3.降序排序 20 4.ThenBy 20 5.ThenByDescending 22 6. 带GroupBy形式 22 LINQ to SQL语句(6)之Group By/Having 23 Group By/Having操作符 23 1.简单形式: 23 2.Select匿名类 : 24 3.最大 值 25 4.最小 值 26 5.平均 值 26 6.求和 26 7.计数 27 8.带条件计数 27 9.Where限制 28 10.多列(Multiple Columns) 28 11.表达式(Expression) 29 LINQ to SQL语句(7)之Exists/In/Any/All/Contains 29 Exists/In/Any/All/Contains操作符 29 Any 29 1.简单形式: 29 2.带条件形式: 30 All 30 Contains 31 1.包含一个对象: 31 2.包含多个值: 32 LINQ to SQL语句(8)之Concat/Union/Intersect/Except 32 Concat/Union/Intersect/Except操作 32 Concat(连接) 32 1.简单形式: 33 2.复 合形式: 33 Union(合并) 33 Intersect(相交) 34 Except(与非) 34 LINQ to SQL语句(9)之Top/Bottom和Paging和SqlMethods 35 Top/Bottom操作 35 Take 35 Skip 35 TakeWhile 36 SkipWhile 36 Paging(分页)操作 36 1.索引 36 2.按唯一键排序 36 SqlMethods操作 37 Like 37 已编译查 询操作(Compiled Query) 38 LINQ to SQL语句(10)之Insert 38 插入(Insert)1.简单形式 38 2.一对多 关系 39 3.多对多关系 39 4.使用动态CUD重写(Override using Dynamic CUD) 40 LINQ to SQL语句(11)之Update 41 更新(Update) 41 1.简单形式 41 2.多项更改 41 LINQ to SQL语句(12)之Delete和使用Attach 42 删除(Delete)1.简单形式 42 2.一对多关系 42 3.推理删除(Inferred Delete) 43 使用Attach更新(Update with Attach) 43 LINQ to SQL语句(13)之开放式并发控制和事务 46 Simultaneous Changes开放式并发控制 46 开放式并发(Optimistic Concurrency) 46 1.Implicit(隐式) 48 2.Explicit(显式) 48 LINQ to SQL语句(14)之Null语义和DateTime 49 Null语义 49 1.Null 49 2.Nullable<T>.HasValue 50 日期函数 50 1.DateTime.Year 51 2.DateTime.Month 51 3.DateTime.Day 51 LINQ to SQL语句(15)之String 51 字符串(String) 51 1.字符 串串联(String Concatenation) 52 2.String.Length 52 3.String.Contains(substring) 52 4.String.IndexOf(substring) 52 5.String.StartsWith (prefix) 53 6.String.EndsWith(suffix) 53 7.String.Substring(start) 53 8.String.Substring (start, length) 53 9.String.ToUpper() 54 10.String.ToLower() 54 11.String.Trim() 54 12.String.Insert(pos, str) 54 13.String.Remove(start) 55 14.String.Remove(start, length) 55 15.String.Replace(find, replace) 55 LINQ to SQL语句(16)之对象标识 56 对象标识 56 对象缓存 56 LINQ to SQL语句(17)之对象加载 57 对象加载延迟加载 57 预先加载:LoadWith 方法 58 LINQ to SQL语句(18)之运算符转换 59 1.AsEnumerable:将类型转换为泛型 IEnumerable 59 2.ToArray:将序列转换为数组 59 3.ToList:将序列转换为 泛型列表 59 4.ToDictionary:将序 列转化为字典 60 LINQ to SQL语句(19)之ADO.NET与LINQ to SQL 60 1.连接 61 2.事务 61 LINQ to SQL语句(20)之存储过程 63 1.标量返回 63 2.单一结 果集 64 3.多个可 能形状的单一结果集 65 4.多个结果集 70 5.带输出参数 79 LINQ to SQL语句(21)之用户定义函数 80 1.在Select使用用户定义的标量函数 80 2.在Where从句 使用用户定义的标量函数 81 3.使用用户定义的表值函数 83 4.以联接方式使用用户定义的表值函数 84 LINQ to SQL语句(22)之DataContext 85 创建和删除数据库 85 数据库验证 88 数据库更改 88 动态查询 89 日志 90 LINQ to SQL语句(23)之动态查询 90 1.Select 91 2.Where 92 LINQ to SQL语句(24)之视图 94 LINQ to SQL语句(25)之继承 96 1.一般形式 97 2.OfType形式 98 3.IS形式 98 4.AS形式 99 5.Cast形式 99 6.UseAsDefault形式 100 7.插入新的记录 101
"Thinking in LINQ" 是指使用LINQ(Language Integrated Query)进行编程时的一种思维方式。 LINQ是微软在.NET平台上引入的一种查询技术,它允许开发者使用类似于SQL的查询语句来操作对象集合。"Thinking in LINQ" 强调了在使用LINQ进行编程时,应该采用的一种思维方式。 首先, "Thinking in LINQ" 强调以数据为心的编程风格。开发者需要先了解并熟悉自己所处理的数据集合,并思考如何使用LINQ来查询和操作数据集合。这包括了选择合适的数据源、定义查询条件和筛选规则,以及确定需要的查询结果。 其次, "Thinking in LINQ" 强调使用函数式编程的思维方式。LINQ提供了许多强大的函数式操作符,如Select、Where、OrderBy等,开发者可以使用这些操作符来对数据进行变换和筛选。这就需要开发者将重点放在对输入数据的处理和转换上,而不是过程和状态的管理。 另外, "Thinking in LINQ" 还强调了使用LINQ的链式调用(Fluent API)来组合和链接多个操作。这种方法可以更加清晰地表达出查询的逻辑,并能够减少间变量的使用,使代码更加简洁和可读性更强。 最后, "Thinking in LINQ" 需要开发者了解和利用LINQ的延迟执行特性。LINQ查询是惰性计算的,这意味着查询只有在使用查询结果时才会被执行。开发者可以充分利用这一特性,通过多次转换和组合操作构建出一个复杂的查询,而只有在需要时才会触发真正的执行。 综上所述,"Thinking in LINQ" 是一种以数据为心、使用函数式编程思维、利用链式调用和延迟执行的思维方式,帮助开发者更加有效地使用LINQ进行编程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值