首先需要在项目中新增一个 linq  to sql 的服务

新增项,数据,LINQ TO sql 类的这个方法

第二步需要一个model类,用作映射

[Table]
public class S_ZDB
{
//每一个属性都需要加上[Column]
[Column]
public string ZDMC { get; set; }
[Column]
public string ZDLX { get; set; }
//下面这个属性是主键
[Column(IsPrimaryKey = true)]
public Guid ZDBH { get; set; }
[Column]
public DateTime CJRQ { get; set; }
[Column]
public string BZ { get; set; }
}

需要在类上面加上[Table]这个属性

做完这些就可以对数据库的值进行操作了

第一步获取配置文件的数据库属性

 public static string sqldata = ConfigurationManager.ConnectionStrings["sql"].ConnectionString;

第二步创建连接对象

   DataContext dt = new DataContext(sqldata);

接下来就是对数据库简单的增删改查

查询是最简单的

注意,没有进过转换的数据如Table<T>的数据,都是映射的

  Table<S_ZDB> TB = dt.GetTable<S_ZDB>();
IQueryable<S_ZDB> IQ = from i in dt.GetTable<S_ZDB>() select i;
如果需要转换成list<T>集合,直接这样就好了
 // List<S_ZDB> li = (from i in dt.GetTable<S_ZDB>() select i).ToList();

下面是对查询的拓展

            //查询部分数据
var ex = from i in dt.GetTable<S_ZDB>() select new { ZDMC = i.ZDMC };
var ex1 = TB.Select(i => new { ZDLX = i.ZDLX }); //查询第一条数据
var ex2 = TB.First();
//查询数据表单中的单个元素,如果出现多个则抛出异常,没有则返回null
//方法 序列为null时 序列不包含任何元素时 序列只包含一个元素时 序列包含多个元素时
//Single 引发异常 引发异常 返回该元素 引发异常
//SingleOrDefault 引发异常 返回default(TSource) 返回该元素 引发异常
//First 引发异常 引发异常 返回该元素 返回第一个元素
//FirstOrDefault 引发异常 返回default(TSource) 返回该元素 返回第一个元素
//Last 引发异常 引发异常 返回该元素 返回最后一个元素
//LastOrDefault 引发异常 返回default(TSource) 返回该元素 返回最后一个元素
var ex3 = TB.SingleOrDefault(p => p.ZDMC == "别墅" && p.ZDLX == "户型"); //查询的分页显示
//这里10表示每页显示数量,1代表页数 ,跳过数据,获取剩下的数据
List<S_ZDB> li1 = (li.Skip(10 * (1 - 1))).ToList();
//显示数据
List<S_ZDB> li2 = (li1.Take(10)).ToList(); //条件查询
var ex4 = from i in TB where i.ZDLX != "户型" select i; //排序和分组查询
var ex5 = from i in TB orderby i.ZDLX select i;
//分组部分
var ex6 = from i in TB
group i by i.ZDLX into LX
orderby LX.Key
select new
{
ZDLX = LX.Key,
ZDMC = LX
}; //循环展示分组结果
foreach (var mc in ex6)
{
Console.WriteLine("类型:{0}", mc.ZDLX);
foreach (S_ZDB Z in mc.ZDMC)
{
Console.WriteLine("类型:{0}", Z.ZDMC);
}
} //聚集,显示每个分组的数量
var ex7 = from i in TB
group i by i.ZDLX into LX
orderby LX.Key
select new
{
ZDLX = LX.Key,
ZDMC = LX.Count()
}; //循环展示分组结果
foreach (var mc in ex7)
{
Console.WriteLine("类型:{0},数量:{1}", mc.ZDLX, mc.ZDMC);
} //连接,多表查询
var ex8 = from i in TB
join j in IQ on i.ZDMC equals j.ZDMC
select new { i.ZDMC };
var ex9 = from i in TB
from j in IQ
where i.ZDMC == j.ZDMC
select new { i.ZDMC };
//新增数据
S_ZDB s = new S_ZDB();
s.ZDMC = "2";
s.ZDLX = "资质等级";
s.ZDBH = new Guid("00000000-0000-0000-0000-000000000000");
s.CJRQ = DateTime.Now;
s.BZ = "wu";
//将新的数据添加到TB中;
TB.InsertOnSubmit(s);  //提交数据,因为数据是映射的关系,所有将数据提交可以直接修改
            dt.SubmitChanges();
   //修改数据
//应为数据不完全无法插入数据库
var ex10 = from i in dt.GetTable<S_ZDB>()
where i.ZDLX == "资质等级" && i.ZDMC == "2"
select i;
foreach (S_ZDB i in ex10)
{
i.ZDMC = "1";
}
dt.SubmitChanges();
//提交数据
  //删除数据
TB.DeleteOnSubmit(S);
var zd = dt.GetTable<S_ZDB>().Select(i => i).Where(i => i.ZDMC == "2" && i.ZDLX == "资质等级");
var z = from i in TB where i.ZDMC == "2" && i.ZDLX == "资质等级" select i;
TB.DeleteAllOnSubmit(z);
//提交数据,因为数据是映射的关系,所有将数据提交可以直接修改
dt.SubmitChanges();

Linq学习笔记四之linq to sql 的基本操作的更多相关文章

  1. C# LINQ学习笔记四:LINQ to OBJECT之操作文件目录

    本笔记摘抄自:https://www.cnblogs.com/liqingwen/p/5816051.html,记录一下学习过程以备后续查用. 许多文件系统操作实质上是查询,因此非常适合使用LINQ方 ...

  2. C#学习笔记四(LINQ,错误和异常,异步编程,反射元数据和动态编程)

    LINQ 1.使用类似的数据库语言来操作集合? 错误和异常 异步编程 1.异步和线程的区别: 多线程和异步操作两者都可以达到避免调用线程阻塞的目的.但是,多线程和异步操作还是有一些区别的.而这些区别造 ...

  3. C# LINQ学习笔记三:LINQ to OBJECT之操作字符串

    本笔记摘抄自:https://www.cnblogs.com/liqingwen/p/5814204.html,记录一下学习过程以备后续查用. 一.统计单词在字符串中出现的次数 请注意,若要执行计数, ...

  4. C# LINQ学习笔记五:LINQ to XML

    本笔记摘抄自:https://www.cnblogs.com/yaozhenfa/p/CSharp_Linq_For_Xml.html,记录一下学习过程以备后续查用. 一.生成xml 1.1创建简单的 ...

  5. C# LINQ学习笔记二:LINQ标准查询操作概述

    本笔记摘抄自:https://www.cnblogs.com/liqingwen/p/5801249.html,记录一下学习过程以备后续查用. “标准查询运算符”是组成语言集成查询 (LINQ) 模式 ...

  6. C#之Linq学习笔记【转】

    写在前面 其实在09年就已经学习过Linq了,并被她那优美的语法所吸引,只是现在所在的公司还在使用VS2005在.Net2.0的框架下面的开发,所以Linq也很久没有用过了,最近看部门的同事对这个有些 ...

  7. C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

    前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...

  8. MySql学习笔记四

    MySql学习笔记四 5.3.数据类型 数值型 整型 小数 定点数 浮点数 字符型 较短的文本:char, varchar 较长的文本:text, blob(较长的二进制数据) 日期型 原则:所选择类 ...

  9. go微服务框架kratos学习笔记四(kratos warden-quickstart warden-direct方式client调用)

    目录 go微服务框架kratos学习笔记四(kratos warden-quickstart warden-direct方式client调用) warden direct demo-server gr ...

随机推荐

  1. SQLite3源程序分析之分析器的生成

    1.概述 Lemon是一个LALR(1)文法分析器生成工具,与bison和yacc类似,是一个可以独立于SQLite使用的开源的分析器生成工具.而且它使用与yacc(bison)不同的语法规则,可以减 ...

  2. Windows10下安装OpenSSL

    Windows10下安装的方法 安装环境:Windows10专业版+VS2013 工具:ActivePerl-5.22.1.2201-MSWin32-x64-299574.msi,下载地址:http: ...

  3. 【BZOJ 1494】【NOI 2007】生成树计数

    http://www.lydsy.com/JudgeOnline/problem.php?id=1494 这道题..因为k很小,而且我们只关心连续的k个节点的连通性,所以把连续的k个点轮廓线上的连通性 ...

  4. Android必学——AsyncTask

    第一章  AsyncTask的基本构成 为是么要异步任务 1)Android单线程模型 2)耗时操作放在非主线程中执行 AsyncTask为何而生 1)子线程中跟新UI 2)封装.简化异步操作 pub ...

  5. windows下python的web环境搭建使用(观看Backbone的教程有感)

    pip安装a 下载 get-pip.py (https://pip.pypa.io/en/latest/installing/#python-os-support b python get-pip.p ...

  6. 测试ajax发送数据时在控制台看不到请求信息

    都是因为我把alert(xmlhttp);alert(url);打印测试数据放到了xmlhttp.open("GET",url,true);之前,导致后面的发送请求不执行了!

  7. Python批量扫描服务器指定端口状态

    闲来无事用Python写了一个简陋的端口扫描脚本,其简单的逻辑如下: 1. python DetectHostPort.py iplist.txt(存放着需要扫描的IP地址列表的文本,每行一个地址) ...

  8. JS-自制提速小工具:开发页面时需要按比例计算宽高值的快速计算器

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <meta name= ...

  9. ThinkPHP框架下的表单验证

    之前的表单验证都是用js写的,这里也可以使用tp框架的验证.但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降. 自动验证是ThinkPHP模型层提供的一种 ...

  10. Java IO流学习总结

    Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...