首页 > 技术文章 > C#第六次作业(LINQ)

sunset-scarlet 2015-04-27 17:34 原文

LINQ,语言集成查询(Language Integrated Query)是一组用于C#和Visual Basic语言的扩展。它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。

LINQ可以对多种数据源和对象进行查询,如数据库、数据集、XML文档甚至是数组,这在传统的查询语句中是很难实现的。如果有一个集合类型的值需要进行查询,则必须使用Where等方法进行遍历,而使用LINQ可以仿真SQL语句的形式进行查询,极大的降低了难度。

数组中的数据可以被LINQ查询语句查询,这样就省去了复杂的数组遍历。数组数据源示例代码如下所示。

string[] str = { "学习", "学习LINQ", "好好学习", "生活很美好" }; 

int[] inter = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 

数组可以看成是一个集合,虽然数组没有集合的一些特性,但是从另一个角度上来说可以看成是一个集合。在传统的开发过程中,如果要筛选其中包含“学习”字段的某个字符串,则需要遍历整个数组。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text; namespace _21_1 

class Program     


        static void Main(string[] args) 
        { 
            string[] str = { "学习", "学习LINQ", "好好学习", "生活很美好" }; //定义数组             

     int[] inter = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };             

     for (int i = 0; i < inter.Length; i++) 
            { 
                if (inter[i] > 5)         

      {
                    Console.WriteLine(inter[i].ToString());  
                }             

    } 
            Console.ReadKey();         

    }     

就像这样的程序,无疑会使得查询过程变得繁琐而无趣

这时候我们可以改变查询方式

用LINQ来进行查询,使用这样的语句

var st = from s in str where s.Contains("学习")  select s; 

这中间的“学习”即是我们查询的东西。

也就是这样修改

class Program 

static void Main(string[] args) 

string[] str = { "学习", "学习LINQ", "好好学习", "生活很美好" }; 

int[] inter = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

var st = from s in inter where s > 5  select s; 

foreach (var t in st) 

Console.WriteLine(t.ToString()); 

Console.ReadKey(); 

}

输出不变

条件可以任意改变

var st = from s in inter where (s*s)%2==0 select s;

例如改成这个则输出变为

使用LINQ进行查询之后会返回一个IEnumerable的集合,这时候就需要实现IEnumerable<T>接口。并且LINQ的查询表达式是在最近一次创建对象时才被编译的。

from 临时变量 in 实现IEnumerable<T>接口的对象
where条件表达式
[orderby 条件]
[group by 条件]
select 临时变量中被查询的值

LINQ同样对数据集支持查询和筛选操作。其实数据集也是集合的表现形式,数据集除了能够填充数据库中的内容以外,还能够通过对数据集的操作向数据集中添加数据和修改数据。数据集能够模拟基本的数据库,包括表、关系等。

暂时只调整到这里。时间不足。据说还能够进行嵌套查询。。不明所以。

推荐阅读