lambda 常用集合扩展及Linq 的一些常规语法

集合Demo:

     var digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; 

     var  numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; 

1、Where 查询 (查询大于5的数值)

      var result = numbers.Where(item=> item > 5);  

      var result = from n in numbers.Where(item=> item > 5) select n;

      6,7,8,9

2、Select 选择(将集合中的对象进行转换为一个新的对象或值)

      var result = numbers.Select(item=> new { item +1 });   

       numbers.Select(item=> item.ToString());  将对象里面的值转换为 String

      var result = from n in numbers select n+1;

       6,5,2,3.......

3、SelectMany 多集合选择 

  跟 Select 的区别:主要是应用于多个集合的转换,或是一个集合中包含N个集合的转换;

4、Take 取集合中的总数;

      var result = numbers.Take(3);   

         5,4,1

5、Skip 跳过的数量;跟 Take 合起来使用可进行分页处理

   var result = numbers.Skip(8);  //跳过前面 8个

        2,0

6、OrderBy  正序排列,类似Sql 中的 Asc

7、OrderByDescending 倒序排队,类型Sql 中的 Desc

8、ThenBy  用于多个属性的正序排列;

9、ThenByDescending 用于多个属性的倒序排队; 

10、Reverse 翻转排列;

11、Group 分组;

12、Distinct 去重;

13、Union  联合;联合两个集合同不重复的数据;

14、Intersect 相交; 两个集合是相交的数据;

15、Except 不相交/除;两个集合中不相交的数据;

16、ToArray  将集合转换为 数组;

17、ToList   将集合转换为 List 集合;

18、ToDictionary 将集合转换字典;

19、OfType 只返回指定类型的数据;

20、First 返回集合的第一个对象;

21、FirstOrDefault  返回集合的第一个对象,如果不存在返回 对象的默认值;

22、ElementAt  返回指定索引的元素,如果索引超过集合长度,则抛出异常;

23、ElementAtOrDefault  返回指定索引的元素,如果索引超过集合长度,则返回对象默认值;

24、Range  用于生成指定范围内的整数的序列。它需要两个参数,第一个参数是序列开始的整数值,第二个参数是序列中整数的数量。

 

25、Repeat  用于生成包含一个重复值的集合。它需要两个参数,第一个参数是任意类型的元素,第二个参数是生成的序列中所包含此元素的数量。下面的示例演示了使用Repeat来生成一个包含10个0的序列:

var q = Enumerable.Repeat(0, 10);

26、Any 返回bool,确定集合中是否有任何一个满足条件的对象;

       var result = numbers.Any(item=> item > 5);   是否存在大于 5的数据;

27、All 返回 bool,确定集合中所有对象是否都满足指定条件;

28、Count 返回  int, 集合中记录条数;

29、Sum 对数值型数据进行累加,等于总和;

30、Min 求数值型集合中最小的对象;

31、Max 求数值型集合中最大的对象;

32、Average 求数值型集合的平均值;

33、Aggregate 求数值型集合相乘的总值;

34、Concat 连接另一个集合;

36、EqualAll 判断两个集合的值是否完全相对;

37、Combine 对两个集合进行指定委托记算;

public void Linq98() {             
    int[] vectorA = { 0, 2, 4, 5, 6 }; 
    int[] vectorB = { 1, 3, 5, 7, 8 }; 
     
    int dotProduct = vectorA.Combine(vectorB, (a, b) => a * b).Sum(); 
     
    Console.WriteLine("Dot product: {0}", dotProduct); 
} 

38、Linq 中两个对象关联相询;

  from a in db.A  join b in db.B 

       on a.Id = b.AId  into temp

       from temB in temp.DefaultIfEmpty()   //如果关联 B 表为空的话,使用对象的默认值

      select new {

     id = a.id,

               name = temB == null ? "匿名" : temB.name

      }

 

官方文档:https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b

posted @ 2018-11-30 12:01  皓月青峰  阅读(417)  评论(0)    收藏  举报