LinQ学习笔记(一)
前言
边工作边转型,对象的思想对于初学者是非常重要的。具备一定的代码识别和理解能力后,我决定边做项目边学习。前些阶段小项目中查询数据的时候使用了Linq,那就从它开始。
正文
1、对于数组:
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Text;
5: using System.Threading.Tasks;
   6:  
      7: namespace ConsoleApplication1
   8: {
      9: class LinqTest
  10:     {
      11: static void Main(string[] args)
  12:         {
      13: string[] names = { "Alone","Lisi","Samba","Fatimah","Sam","Ssn"};
14: //第一种使用原生态的查询语句的方法
15: var queryResult = from n in names
16: where n.StartsWith("S")
  17:                               orderby n descending  
        18:                               select n; 
        19:                  
      20: //第二种方法使用Linq的方法
21: // var queryResult = names.OrderByDescending(n=>n).Where(n=>n.StartsWith("s"));
  22:               
      23: foreach (var Items in queryResult)
  24:             {
        25:                 Console.WriteLine(Items);
        26:             }
        27:             Console.ReadKey();
        28:  
        29:         }
        30:     }
        31: }
结果:
Ssn 
  
Samba 
  
Sam
许多都是在一行代码中完成的,对于以上的这样最简单的查询,方法语言要比查询语法更加简短。
var queryResult = from n in names
//n为数据中的代表,有点像foreach。迭代,Linq数据源必须是是可枚举的——即必须是数组和集合以便从中选择一个或者多个元素 
      
                            where n.StartsWith("S")
//使用where语句,当然限制的条件可以是其他如(where n.Length>10)或者(where n.Contains("Q"))
//若n为数字这可以使用  where n<1000 
      
                           orderby n descending  
//降序 //orderby n 默认为升序 //orderby n.Substring(n.Length-1)//按最后一个字母来排序
select n;
// 指定结果集中包含哪一些元素。这里就是一个集合里面就只是字符串,所以就只要查询n这个对象就好了
var queryResult = names.OrderByDescending(n=>n).Where(n=>n.StartsWith("s")); 
    
  //c#编译器把Lambda表达式n=>n.StartsWith("s")编译成一个匿名方法 ,Where()方法在names数组上的每一个元素执行这个方法  
  //如果Lamdba表达式给某个元素返回的是true,那么该元素就包含在Where返回的结果集中 
    
  //OrderByDescending(n=>n)为降序,OrderBy(n=>n)为升序
2、对于聚合函数:
| Count() | 结果中的个数 | 
| Min() | 结果中的最小值 | 
| Max() | 结果中的最大值 | 
| Average() | 数字结果的平均值 | 
| Sum() | 所有数字结果的总和 | 
使用方法: 
    
queryResult.Count()
queryResult.Min()
queryResult.Max()
queryResult.Average()
queryResult.Sum(n=>(long)n) //怕超出范围使得导致溢出错误,n为int的时候
  
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号