首页 > 代码库 > LINQ基础

LINQ基础

 1             var i1 = 6; 2             //C#中的var是一个类型的简写,是根据右边进行类型的“推导” 3             //可以根据6推断出来var代表int,只是编译器自动帮我们把var换成int 4  5             //i1 = "bbbb"; //不可以 6  7             object o1 = 6; 8             o1 = "bbb";//可以,object可以指向任意类型 9 10 11             //var专门为匿名类型而生12             var p = new { Age = 5, Name = "tom" };//声明匿名类型的两个属性13             //并且创建匿名类型的一个对象,然后为对象的各个属性赋值(通过构造函数)14             Console.WriteLine(p.Name);//p是匿名类型的对象15 16             //成员一致的匿名类型会重用17             //编译器只生成了两个类,p和p1共用一个,p2单独用一个18             var p1 = new { Age = 6, Name = "jim" };19 20             //由于参数类型不一致21             var p2 = new { Father = "tom", Mother = "lucy" };22 23 24             object p3 = new { Father = "tom", Mother = "lucy" };//也可以,object可以指向任意类型25             //p3.Mother; //这样写不可以,因为不知道p3.Mother是什么类型。

=========================进化前:var为匿名函数服务,匿名函数为linq服务==============

 1             int[] values = { 3, 5, 9, 8, 2, 20, -5, -9, 306 }; 2  3             //过滤掉负数,把数组排序,然后元素两边加[]输出 4  5             var e1 = values.Where(i => i > 0).OrderBy(i => i) 6                 .Select(i => "[" + i + "]"); 7             foreach (var i in e1) 8             { 9                 Console.WriteLine(i);10             }

==============================进化:微软V5,效率更高更清晰====================

            ///编译器玩花招            //执行顺序是从上到下            var e1 = from i in values//foreach(int i in values)                                          where i > 0                     orderby i descending//降序排列                     select "[" + i + "]";            //基于类型推断的考虑,select在最后,from在最前            foreach (var i in e1)            {                Console.WriteLine(i);            }