Language-Integrated 查询(LINQ)是基于将查询功能直接集成到 C# 语言的一组技术的名称。 传统上,针对数据的查询表示为简单字符串,无需在编译时进行类型检查或 IntelliSense 支持。 此外,必须了解每种数据源类型的不同查询语言:SQL 数据库、XML 文档、各种 Web 服务等。 使用 LINQ 时,查询是一流的语言构造,就像类、方法和事件一样。

编写查询时,LINQ 最明显的“语言集成”部分是查询表达式。 查询表达式以声明性 查询语法编写。 通过使用查询语法,可以使用最少的代码对数据源执行筛选、排序和分组作。 使用相同的查询表达式模式从任何类型的数据源查询和转换数据。

所有 LINQ 查询操作都包括三个不同的动作。

  1. 获取数据源。
  2. 创建查询。
  3. 执行查询

一.语句查询

from 迭代变量 in数据源 (集合/数组) where 筛选条件 select 迭代变量

        //1.创建一个数据源
        int[] ints = { 1, 2, 3 };
        //2.查询语句 其中n是迭代变量,ints是数据源,
        var linqint=from n in ints 
                    select n;
        //3.执行
        foreach (var n in linqint)
        {
            Console.WriteLine(n);
        }

        Console.ReadLine();

这个是一个演示。当然也可以直接遍历ints,也能实现效果。

select用法,

        List<Dictionary<string, int>> ints2 = new List<Dictionary<string, int>>()
        { new Dictionary<string,int>(){{"a",11} },
          new Dictionary<string,int>(){{"b",22} },
          new Dictionary<string,int>(){{"c",33} },
        };
        //n就是dictionary<string, int>
        var linqints2 = from n in ints2
                        select n.Keys;
        foreach (var n in linqints2)
        {
            Console.WriteLine("keys:"+n.FirstOrDefault());
        }
        //select new在LINQ查询中用于创建匿名类型或已知类型的对象
        var linqints_2=from n in ints2
                       select new
                       {
                           a = n.Values.FirstOrDefault(),
                           b= n.Keys.FirstOrDefault(),
                           
                       } ;
        foreach (var item in linqints_2)
        {
            Console.WriteLine("keys:" + item.a.ToString()+"value:"+item.b.ToString());

        }

更多推荐