zoukankan      html  css  js  c++  java
  • C# LINQ

    LINQ:语言集成查询

    LINQ是C#中最为璀璨的明珠。  -ARM830

    LINQ最大的功能是进行查询。

    比如说查询某个集合中小于什么什么的。

    如果不使用LINQ,多半都是用for,foreach什么的。

    比如有数组

     var NumArray = new[] {0,1,2,3,4,5,6,7,8,9 };

    我要查询所有大于0,小于5的元素

    不使用LINQ代码:

                var NumArray = new[] {0,1,2,3,4,5,6,7,8,9 };
    
                ArrayList list = new ArrayList();
    
                for(int i=0;i<NumArray.Length;i++)            
                    if(0< NumArray[i] && NumArray[i]<5)               
                        list.Add(NumArray[i]);                 
                    
                
                foreach (var item in list)
                    Console.Write($" {item}");

    那使用LINQ该如何?

    代码:

               var NumArray = new[] {0,1,2,3,4,5,6,7,8,9 };
    
                var list = from i in NumArray
    
                           where i > 0 && i < 5
    
                           select i;                                             
                
                foreach (var item in list)
                    Console.Write($" {item}");
    
                Console.ReadKey();

    这两者一比较,高下立判。

    OK。

    正式的讲一下LINQ。

    LINQ的代码和SQL很像,关键字几乎是差不多的。

    如果你有学习过SQL,那么学习LINQ毫无难度,5分钟解决战斗。

    首先:

     LINQ的结尾必须是以select和group结尾的。

     LINQ的起手是from。

     最简单的例子:就是上面的查询。

     我们来分析一下:

    1             var list = from i in NumArray
    2 
    3                        where i > 0 && i < 5
    4 
    5                        select i;

     1:from开头,这里的i是一个自动推断类型。也就是var i;

     in 是一个关键字和foreach的in是一样的作用。

     其实from  i in NumArray也相等于 foreach(var i in NumArray)

    3:where 关键字,是条件关键字。当where右面表达式成立时才执行下一步

    这一个步骤很好理解。 相等于if,也就是if(i>0&&i<5)

    5: select 关键字 结果自动存入其中。也就是将结果存进 i。

    值得一说 i的类型是  IEnumerable<T>集合。

    这就是LINQ的基础用法。

  • 相关阅读:
    【leetcode】416. Partition Equal Subset Sum
    【leetcode】893. Groups of Special-Equivalent Strings
    【leetcode】892. Surface Area of 3D Shapes
    【leetcode】883. Projection Area of 3D Shapes
    【leetcode】140. Word Break II
    【leetcode】126. Word Ladder II
    【leetcode】44. Wildcard Matching
    【leetcode】336. Palindrome Pairs
    【leetcode】354. Russian Doll Envelopes
    2017.12.22 英语面试手记
  • 原文地址:https://www.cnblogs.com/T-ARF/p/9227785.html
Copyright © 2011-2022 走看看