Lambda表达式练习
来源:互联网 发布:自学java的网站 编辑:程序博客网 时间:2024/06/07 08:45
根据微软的示例代码,体验一下
1.准备测试数据static int[] numbers = new int[] { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };static string[] strings = new string[] { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};class Person {public string Name;public int Level;}static Person[] persons = new Person[] {new Person {Name="Matt", Level=3},new Person {Name="Luca", Level=3},new Person {Name="Jomo", Level=5},new Person {Name="Dinesh", Level=3},new Person {Name="Charlie", Level=3},new Person {Name="Mads", Level=3},new Person {Name="Anders", Level=9}};2.过滤数据public static void Sample1() {// use Where() to filter out elements matching a particular condition IEnumerable<int> fnums = numbers.Where(n => n < 5);Console.WriteLine("Numbers < 5");foreach(int x in fnums) {Console.WriteLine(x);}}3.匹配首个字母public static void Sample2() {// use First() to find the one element matching a particular condition string v = strings.First(s => s[0] == 'o');Console.WriteLine("string starting with 'o': {0}", v);}4.根据numbers排序public static void Sample3() {// use Select() to convert each element into a new value IEnumerable<string> snums = numbers.Select(n => strings[n]);Console.WriteLine("Numbers");foreach(string s in snums) {Console.WriteLine(s);}}5.匿名类型,注意var关键字public static void Sample4(){// use Anonymous Type constructors to construct multi-valued results on the fly var q = strings.Select(s => new {Head = s.Substring(0,1), Tail = s.Substring(1)});foreach(var p in q) {Console.WriteLine("Head = {0}, Tail = {1}", p.Head, p.Tail);}}6.联合查询(即使用两个以上的查询条件)public static void Sample5() {// Combine Select() and Where() to make a complete query var q = numbers.Where(n => n < 5).Select(n => strings[n]);Console.WriteLine("Numbers < 5");foreach(var x in q) {Console.WriteLine(x);}}7.使用ToList方法缓存数据,不知道这样说对不对public static void Sample6() {// Sequence operators form first-class queries are not executed until you enumerate them. int i = 0;var q = numbers.Select(n => ++i);// Note, the local variable 'i' is not incremented until each element is evaluated (as a side-effect). foreach(var v in q) {Console.WriteLine("v = {0}, i = {1}", v, i);}Console.WriteLine();// Methods like ToList() cause the query to be executed immediately, caching the results int i2 = 0;var q2 = numbers.Select(n => ++i2).ToList();// The local variable i2 has already been fully incremented before we iterate the results foreach(var v in q2) {Console.WriteLine("v = {0}, i2 = {1}", v, i2);}}8.分组查询public static void Sample7() {// use GroupBy() to construct group partitions out of similar elements var q = strings.GroupBy(s => s[0]); // <- group by first character of each stringforeach(var g in q) {Console.WriteLine("Group: {0}", g.Key);foreach(string v in g) {Console.WriteLine("/tValue: {0}", v);}}}9.统计聚合public static void Sample8() {// use GroupBy() and aggregates such as Count(), Min(), Max(), Sum(), Average() to compute values over a partition var q = strings.GroupBy(s => s[0]).Select(g => new {FirstChar = g.Key, Count = g.Count()});foreach(var v in q) {Console.WriteLine("There are {0} string(s) starting with the letter {1}", v.Count, v.FirstChar);}}10.排序// use OrderBy()/OrderByDescending() to give order to your resulting sequence var q = strings.OrderBy(s => s); // order the strings by their nameforeach(string s in q) {Console.WriteLine(s);}}11.二次排序public static void Sample9a() {// use ThenBy()/ThenByDescending() to provide additional ordering detail var q = persons.OrderBy(p => p.Level).ThenBy(p => p.Name);foreach(var p in q) {Console.WriteLine("{0} {1}", p.Level, p.Name);}}
- Lambda表达式练习
- Lambda表达式练习
- java lambda 表达式练习
- java8:lambda表达式强化练习
- Lambda表达式及相关练习
- Lambda Expressions(Lambda表达式)
- Lambda表达式
- Lambda表达式
- Lambda 表达式
- Lambda表达式
- lambda表达式
- lambda表达式
- Lambda表达式
- Lambda表达式
- Lambda表达式
- Lambda表达式
- Lambda 表达式
- Lambda表达式
- PHP学习笔记--面向对象
- 关于16进制的字符串转为整数的问题
- shell text command
- 三层架构延伸 转载
- C# 操作EXCEL 类 可以实现导入导出功能 折腾了好长时间 现在两种方法显示出来
- Lambda表达式练习
- 密度分辨率
- 关于C++中函数返回引用的讨论
- VirtualBox安装MeeGo1.2 Netbook
- 读《设计原本》,想到IPCore项目
- 非常好的自己定义jdbc数据库连接池
- 大胆投资自我
- XMLHTTP对象应用开发初体验
- 空间分辨率