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同样对数据集支持查询和筛选操作。其实数据集也是集合的表现形式,数据集除了能够填充数据库中的内容以外,还能够通过对数据集的操作向数据集中添加数据和修改数据。数据集能够模拟基本的数据库,包括表、关系等。
暂时只调整到这里。时间不足。据说还能够进行嵌套查询。。不明所以。