(一)Linq语句
语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称,使用查询语法,可以用最少的代码对数据源执行筛选、排序和分组操作。 可使用相同的基本查询表达式模式来查询和转换 SQL 数据库、ADO .NET 数据集、XML 文档和流以及 .NET 集合中的数据。
接下来我们演示一些常用Linq语句的用法,我们这里连接了这样两个表的数据,上面的表为teach表,下面的为users表,我们给数据库创建一个实例化对象。
addEntities addEntities = new addEntities();
select返回指定类型(通常用于查询某个数据或者某些数据)
查询单个数据,如我们要查询teach表中name的所有字段。
var a = addEntities.teach.Select(x => x.name);
foreach (var v in a)
{
Console.WriteLine(v);
}
Console.ReadLine();
我们用一个变量a来接收,并且遍历出来,现在我们将其代码运行看一下效果,可以看到我们将teach表的name字段全部都打印出来了。
查询多个数据,如我们要查询teach表中name,bj,sex的所有字段。
var a = addEntities.teach.Select(x => new
{
x.name,
x.sex,
x.bj
}).ToList();
foreach(var v in a)
{
Console.WriteLine(v);
}
Console.ReadLine();
现在我们将其代码运行看一下效果,可以看到我们将teach表的name,bj,sex字段全部都打印出来了。
where 查询特定条件(通常用于筛选数据)
用于筛选符合条件的字段,一般与select一起出现,我们查询teach表中bj字段为09-1的name。
var a = addEntities.teach.Where(x => x.bj == "09-1").Select(x => x.name);
foreach (var v in a)
{
Console.WriteLine(v);
}
Console.ReadLine();
现在我们将其代码运行看一下效果,可以看到我们将teach表中bj为09-1的name全部查询了出来。
count
返回一个int类型,返回值为满足条件的个数或者数据中的总个数,我们查询一下teach表中bj字段为09-1的个数。
var a = addEntities.teach.Where(x => x.bj == "09-1").Count();
Console.WriteLine(a);
Console.ReadLine();
现在我们将其代码运行看一下效果,可以看到我们teach表中bj为09-1的个数显示为3。
any
是否至少有一条数据满足方法,有返回true,无返回false,我们查询一下teach表中bj字段是否有为09-1的。
var a = addEntities.teach.Where(x => x.bj == "09-1").Any();
Console.WriteLine(a);
Console.ReadLine();
现在我们将其代码运行看一下效果,可以看到我们控制台显示为true说明总数据中有该数据。
Single
有且只有一条满足要求的数据,我们查询一下teach表中bj字段是否有为09-4的,有就会返回满足该要求的全部字段,这里我们打印出name。
var a = addEntities.teach.Where(x => x.bj == "09-4").Single();
Console.WriteLine(a.name);
Console.ReadLine();
如果有不止一条满足该条件的数据,那么程序会抛出一个异常。
OrderBy
对数据正序排序,我们将teach表中的yw字段进行正序排序。
var a = addEntities.teach.OrderBy(x => x.yw);
foreach (var v in a)
{
Console.WriteLine(v.yw);
}
Console.ReadLine();
OrderByDescending
对数据进行倒序排序,我们将teach表中的yw字段进行倒序排序。
var a = addEntities.teach.OrderByDescending(x => x.yw);
foreach (var v in a)
{
Console.WriteLine(v.yw);
}
Console.ReadLine();
First
至少有一条数据,返回第一条。
var a = addEntities.teach.First(x => x.bj == "09-1");
Console.WriteLine(a.name);
Console.ReadLine();
我们将代码运行出来,看到返回的时teach表中bj为09-1的第一条数据的name为张三。
FirstOrDefault
返回数据的第一条数据或者时默认值。
var a = addEntities.teach.FirstOrDefault();
Console.WriteLine(a.name);
Console.ReadLine();
Max
返回该字段数据中的最大值,现在我们查询一下teach表中yw字段的最大值。
var a = addEntities.teach.Max(x => x.yw);
Console.WriteLine(a);
Console.ReadLine();
Min
返回该字段数据中的最小值,现在我们查询一下teach表中yw字段的最大值。
var a = addEntities.teach.Min(x => x.yw);
Console.WriteLine(a);
Console.ReadLine();