2012年11月4日星期日

LinQ学习笔记(一)

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的时候        

 

附注:                     

看了很多,总结真是写得慢死了,悲剧啊~真是佩服那些长期写博客的




TAG: