Linq学习<一>

lambda查询语法: var result =arrarylist.where(n=>n.contains("l"))  简化的委托方法实例

 

linq查询结构:

var  result = from  ------- in   arrayList            

                   where------

                   (order-------)

                    select  -------

有点像sql写法:select * from table name where .我们可以简答记成将sql中select放在后面

 

var是C#中的一个新关键字,用于声明一般的变量类型,特别适合于包含LINQ
查询的结果。var关键字告诉C#编译器,根据查询推断结果的类型。这样,就不必提前声明从LINQ
查询返回的对象类型了——编译器会推断出该类型

下面例子张的数据源是前面声明的字符串数组stringArray。变量items只是数据源中某一元素的代表,类似
于foreach语句后面的变量名。指定from子句,就可以只查找集合的一个子集,而不用迭代所有的
元素。

 

  public void test()
        {
            Console.WriteLine("-----------Linq first Example------------------");
            string[] stringArray = new string[] {"cat","litter","cot","dog","love","like" };

            var result =                   //linq way,查询语法
                from items in stringArray
                where items.StartsWith("l")
                select items;
            foreach (var item in result)
            {
                Console.WriteLine(item);
                
            }
            //,var是C#中的一个新关键字,用于声明一般的变量类型,特别适合于包含LINQ查询的结果。var关键字告诉C#编译器,根据查询推断结果的类型
        }

  linq是一种查询语法,还有一种方式语法,就是lambda,用起来更方便

   public void lambdaTest()
        {
            Console.WriteLine("-----------Lamada text------------------");
          
            string[] stringArray = new string[] { "cat", "litter", "cot", "dog", "love", "like" };

            var result = stringArray.Where(n => n.StartsWith("l"));  //Lambda way查询语法
            foreach (var item in result)
            {
             
                Console.WriteLine(item);

            }
        }

  2.linq排序

 public void LinqSortTest()
        {
            Console.WriteLine("-----------result after sort-------------------");
            string[] stringArray = new string[] { "cat", "litter", "cot", "dog", "love", "like" };

            var result =                   //linq way,查询语法
                from items in stringArray
                where items.StartsWith("l")
               // orderby items descending    //ascending  默认从A——Z
                orderby items.Substring(items.Length-1)   //从items的倒数第二字母开始排序
                select items;
            foreach (var item in result)
            {
                Console.WriteLine(item);

            }
        
        }

  用lamabda排序

  public void lambdaOrderTest()
        { 
        Console.WriteLine("-----------lambdaOrderTest-------------------");
            string[] stringArray = new string[] { "cat", "litter", "cot", "dog", "love", "like" };

            var result =stringArray.OrderBy(n=>n).Where(n=>n.Contains("l"));
           // var result = stringArray.OrderByDescending(n => n).Where(n=>n.Contains("l"));
           // var result = stringArray.OrderBy(n => n.Substring(n.Length - 1)).Where(n=>n.StartsWith("l"));
            foreach (var item in result)
            {
                Console.WriteLine(item);
            }
        }

 3.用ramdon生成一个大的int数组进行操作

   public void SearchDataFromABigArray()
            {
            Console.WriteLine("--------------Get  Data from a big array----------------------");
            int[] intArray = GeneratorBigArray(12345678);

            var result = from items in intArray
                         where items < 10000
                         select items;
            foreach (var item in result)
            {
                Console.WriteLine(item);
            }
        }

  linq基本寒素:sum,max,min,averge  注意sum时如果数据过大,对于32位会产生溢出错误,linq有Longcount(),也就是将结果转为64位,防止溢出错误,如下:

    Console.WriteLine(result.Sum(n=>(long)n));

 public void UsingFunctionOfLinq()
        {
            Console.WriteLine("----------------------using fuction in linq--------------------------");
            int[] intArray = GeneratorBigArray(12345678);
            var result = from items in intArray
                         where items > 1000
                         select items;

            Console.WriteLine("sum is:");
            Console.WriteLine(result.Sum(n=>(long)n));
            Console.WriteLine("max is:");
            Console.WriteLine(result.Max());
            Console.WriteLine("min is:");
            Console.WriteLine(result.Min());
            Console.WriteLine("average is :");
            Console.WriteLine(result.Average());
        }

  

生成大数据函数:

这里采用radom(0)来生成不一样的数据,赋值给int数组,

  private int[] GeneratorBigArray(int p)
        {
            Random genertor = new Random(0);
            int[] array = new int[p];
            for (int i = 0; i < p - 1; i++)
            {
                array[i] = genertor.Next();
            }
            return array;
        }

  

 

 

posted @ 2013-07-30 22:24  Jackvin  阅读(339)  评论(0编辑  收藏  举报