c#回炉重造(四)Linq语句

本文介绍了如何在C#中使用LINQ进行数据操作,包括基本查询、筛选(Where)、选择(Select)、排序(OrderBy/OrderByDescending)等,通过示例展示了连接数据库查询teach和users表的方法。
摘要由CSDN通过智能技术生成

(一)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();

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值