Ling to SQL不仅允许以标准的对象访问方式来访问对象模型,而且可以使用非常类似于SQL语句的查询表达式来操作对象模型。
利用VS2010新建一个项目,在项目中添加Ling to SQL类,将数据库连接后将所需要的表拖入到后缀为“.dbml”的项目中。
Ling to SQL实现增删查改操作,代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace LinqToSQL
{
class Program
{
static void Main(string[] args)
{
OrderLinqDataContext od = new OrderLinqDataContext();
//1.插入操作
//Insert(od);
//2.查询操作
//Query(od);
//3.更新操作
//Update(od);
//4.删除操作
//Delete(od);
//5.where语句:查询Employee表中为“职员”的员工
//QueryAndWhere(od);
//6.Distinct:删除Employee表中重复的列
//Distinct(od);
//7.AVG/COUNT/SUM/MIN/MAX:取得Employee表中员工的平均薪酬
//AVG(od);
//8.GROUP BY:选出每一职称员工的最高薪酬、最低薪酬及平均薪酬
//GroupBy(od);
//9.1 内连接
//InnerJoin(od);
//9.2 外连接
//OuterJoin(od);
//10.ORDER BY:排序
//OrderBy(od);
//11.EXISTS:选出没有下订单的客户
//Exists(od);
//12.WHERE IN:查看指定的几个客户的定单
//WhereIn(od);
//13.UNION ALL/UNION:Concat不会去除重复项目,相当于SQL的Union All;而Union会去除重复项,相当于SQL的Union
//Union(od);
//14.Intersect/Except(是用复合查询+EXIST实现的)
//IntersetAndExcept(od);
//15.Skip-Take(是用ROW_NUMBER()函数实现的)
//Skip_Take(od);
//16.直接执行SQL语句查询:缺点就是失去了编译器检查的功能,并且得自己构建好一个类,用于存放数据(如果此类还没有的话)。
//SQLQuery(od);
//17.First/FirstOrDefault/Single(是用TOP实现的):选出No为“E2005001”的员工
/*First – 至少有一条,否则抛异常
FirstOrDefault – 如果一条都没有,则返回默认值(对象的话默认值就是null)
Single – 有且只有一条,否则抛异常*/
Single(od);
//18.CASE WHEN
//CaseWhen(od);
}
private static void Skip_Take(OrderLinqDataContext od)//Skip().Take()
{
//获取第2个产品开始的5个产品
var result = (
from p in od.Product
select p
).Skip(2).Take(5);
foreach (var item in result)
{
Console.WriteLine(item.productName);