LINQ知识点

linq中select()实现了一种投影操作,可以进行对象类型转换
Takewhile()和skipwhile有点类似,只不过当where()遇到不符合条件的元素是,会继续查找序列中满足条件的下一个元素,直到序列结束,而takewhile在遇到不符合条件的元素时会直接返回前面的查找到的符合条件的元素
skipwhile是takewhile的反操作,会一直跳过符合条件的元素,知道遇到第一个不符合条件的元素,然后返回钙元素之后的所有元素构成的序列
Intersect返回两个序列中相同元素组成的序列
Except返回第一个序列中有二第二个序列中没有的元素
concat运算符用于连接两个序列
union运算符也用于链接两个序列,但那时会提出相同的项目
zip()对两个序列中位置相同的两个元素进行操作,给予两个元素的操作结果返回一个新的元素,如果两个序列的长度不想等, 则以长度短的为准
-----------------------------------------------------------------------
Toarray(),Tolist(),ToDictionary(),ToLookUp()四个方法用于将IEnumerable<T>转换为响应的类型,再转换是,会执行遍历
ElementAt()以序列中元素的位置作为参数,返回钙元素,如果元素不存在,就抛出异常
ElemnetAtOrDefault()在元素不存在时赶回该类型的默认值,对于引用类型来说,其默认值为null
SIngle()与First()类似,只不过Single要求序列中有且只有一个满足条件的项,如果满足条件的有两项,则会抛出异常,SingleOrDefault要求有一个或零个男足条件的项,当满足条件项为0时,返回默认值
Aggregate()运算符用于返回自定义的聚合()
Contains()判断某一个元素是否存在于序列中
Any()判断序列中是否存在满足表达式的元素,只要有一个元素满足,则返回true,当调用无参数的重载方法时,Any用于判断序列中是否包含元素
All()判断序列中所有的元素是否都满足表达式,只要有一个元素不能满足,则返回false
SequenceEqual()用于逐项比较两个序列,当两个序列中的元素数目相同,并且序列中相同位置的元素也相同时,返回True否则返回False

 1  Pretion<int> sd = x => x == 4;
 2             Pretion<string> str = s => { return s == "8"; };
 3             //如果没有使用花括号,默认的会把方法返回值返回,如果使用了{}就会把需要“return”的返回出去
 4 
 5             IList<Pro123> product = new List<Pro123>() {
 6                 new Pro123 { Name = "生活与科学", Price = 3.23 },
 7                 new Pro123 { Name = "大自然", Price = 5.23 },
 8                 new Pro123 { Name = "梦想与彩虹", Price = 8.23},
 9                 new Pro123 { Name = "大人鱼", Price = 6.23 }
10             };
11             var query = from a in product
12                         where a.Price >= 4 && a.Price < 7
13                         orderby a.Price descending
14                         select new { name = a.Name, price = a.Price }//select()实现的是投影操作
15                         ;
16             foreach (var item in query)
17             {
18                 System.Console.WriteLine(item.name);
19                 System.Console.WriteLine(item.price);
20             }
21             int[] arrayint = { 1 };
22             int sum = arrayint.Aggregate(0, (x, y) => x + y * 3);//0代表x,意思是0+循环的每个数组项*3
23             System.Console.WriteLine(sum);

 

posted @ 2016-05-25 18:31  IT火  阅读(412)  评论(0编辑  收藏  举报