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

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

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

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

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

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

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

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

第二步创建连接对象

  1. DataContext dt = new DataContext(sqldata);

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

查询是最简单的

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

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

下面是对查询的拓展

  1. //查询部分数据
  2. var ex = from i in dt.GetTable<S_ZDB>() select new { ZDMC = i.ZDMC };
  3. var ex1 = TB.Select(i => new { ZDLX = i.ZDLX });
  4.  
  5. //查询第一条数据
  6. var ex2 = TB.First();
  7. //查询数据表单中的单个元素,如果出现多个则抛出异常,没有则返回null
  8. //方法 序列为null时 序列不包含任何元素时 序列只包含一个元素时 序列包含多个元素时
  9. //Single 引发异常 引发异常 返回该元素 引发异常
  10. //SingleOrDefault 引发异常 返回default(TSource) 返回该元素 引发异常
  11. //First 引发异常 引发异常 返回该元素 返回第一个元素
  12. //FirstOrDefault 引发异常 返回default(TSource) 返回该元素 返回第一个元素
  13. //Last 引发异常 引发异常 返回该元素 返回最后一个元素
  14. //LastOrDefault 引发异常 返回default(TSource) 返回该元素 返回最后一个元素
  15. var ex3 = TB.SingleOrDefault(p => p.ZDMC == "别墅" && p.ZDLX == "户型");
  16.  
  17. //查询的分页显示
  18. //这里10表示每页显示数量,1代表页数 ,跳过数据,获取剩下的数据
  19. List<S_ZDB> li1 = (li.Skip(10 * (1 - 1))).ToList();
  20. //显示数据
  21. List<S_ZDB> li2 = (li1.Take(10)).ToList();
  22.  
  23. //条件查询
  24. var ex4 = from i in TB where i.ZDLX != "户型" select i;
  25.  
  26. //排序和分组查询
  27. var ex5 = from i in TB orderby i.ZDLX select i;
  28. //分组部分
  29. var ex6 = from i in TB
  30. group i by i.ZDLX into LX
  31. orderby LX.Key
  32. select new
  33. {
  34. ZDLX = LX.Key,
  35. ZDMC = LX
  36. };
  37.  
  38. //循环展示分组结果
  39. foreach (var mc in ex6)
  40. {
  41. Console.WriteLine("类型:{0}", mc.ZDLX);
  42. foreach (S_ZDB Z in mc.ZDMC)
  43. {
  44. Console.WriteLine("类型:{0}", Z.ZDMC);
  45. }
  46. }
  47.  
  48. //聚集,显示每个分组的数量
  49. var ex7 = from i in TB
  50. group i by i.ZDLX into LX
  51. orderby LX.Key
  52. select new
  53. {
  54. ZDLX = LX.Key,
  55. ZDMC = LX.Count()
  56. };
  57.  
  58. //循环展示分组结果
  59. foreach (var mc in ex7)
  60. {
  61. Console.WriteLine("类型:{0},数量:{1}", mc.ZDLX, mc.ZDMC);
  62. }
  63.  
  64. //连接,多表查询
  65. var ex8 = from i in TB
  66. join j in IQ on i.ZDMC equals j.ZDMC
  67. select new { i.ZDMC };
  68. var ex9 = from i in TB
  69. from j in IQ
  70. where i.ZDMC == j.ZDMC
  71. select new { i.ZDMC };
  1. //新增数据
  2. S_ZDB s = new S_ZDB();
  3. s.ZDMC = "2";
  4. s.ZDLX = "资质等级";
  5. s.ZDBH = new Guid("00000000-0000-0000-0000-000000000000");
  6. s.CJRQ = DateTime.Now;
  7. s.BZ = "wu";
  8. //将新的数据添加到TB中;
  9. TB.InsertOnSubmit(s);  //提交数据,因为数据是映射的关系,所有将数据提交可以直接修改
  10.             dt.SubmitChanges();
  1. //修改数据
  2. //应为数据不完全无法插入数据库
  3. var ex10 = from i in dt.GetTable<S_ZDB>()
  4. where i.ZDLX == "资质等级" && i.ZDMC == "2"
  5. select i;
  6. foreach (S_ZDB i in ex10)
  7. {
  8. i.ZDMC = "1";
  9. }
  10. dt.SubmitChanges();
  11. //提交数据
  1. //删除数据
  2. TB.DeleteOnSubmit(S);
  3. var zd = dt.GetTable<S_ZDB>().Select(i => i).Where(i => i.ZDMC == "2" && i.ZDLX == "资质等级");
  4. var z = from i in TB where i.ZDMC == "2" && i.ZDLX == "资质等级" select i;
  5. TB.DeleteAllOnSubmit(z);
  6. //提交数据,因为数据是映射的关系,所有将数据提交可以直接修改
  7. 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. AppBox_v2.0完整版免费下载,暨AppBox_v3.0正式发布!

    文章更新: AppBox v6.0中实现子页面和父页面的复杂交互 AppBox 是基于 FineUI 的通用权限管理框架,包括用户管理.职称管理.部门管理.角色管理.角色权限管理等模块. AppBox ...

  2. C#组件系列——又一款Excel处理神器Spire.XLS,你值得拥有

    前言:最近项目里面有一些对Excel操作的需求,博主想都没想,NPOI呗,简单.开源.免费,大家都喜欢!确实,对于一些简单的Excel导入.导出.合并单元格等,它都没啥太大的问题,但是这次的需求有两点 ...

  3. js兼容性

    1.getElementByClassName 在使用原生JavaScript时,获取类选择符时,即使用getElementByClassName,它在Firefox和IE下是不能兼容. Firefo ...

  4. 利用powerDesigner16.5连接oracle数据库并自动生成表结构图

  5. 【poj3744】 Scout YYF I

    http://poj.org/problem?id=3744 (题目链接) 题意 给出n个雷,分别在 a[1]...a[n] ,走一步概率为 p ,走两步概率为 1-p ,一开始在 1 号位置,问安全 ...

  6. sass 安装、配置,css规则

    http://blog.csdn.net/oyuemijindu/article/details/51036096 --sass 安装 一安装  1.ruby下载,可以到官网下载 ,注意如果是系统如果 ...

  7. PAT Basic Level 1001

    大纲考察内容 数据存储结构:数组.链 基础算法:递归.排序.计算时间复杂度.空间复杂度.分析算法稳定性 1001.害死人不偿命的(3n+1)猜想 (15) https://www.patest.cn/ ...

  8. struts-hibernate-ajax完成区县和街道级联下拉框功能

    前言:这次dao用的是hibernate,控制层和显示层用的是struts,页面用的是ajax... 啰嗦:我做这个用了很久,用了2周,难点没破解的地方,hibernate的多对一关系生成实体类中属性 ...

  9. 【实践】Memcached实例解析

    一.关于Memcached Memcached是一个自由开源的,高性能,分布式内存对象缓存系统. Memcached是一种基于内存的Key-Value存储,用来存储小块的任意数据(字符串.对象).这些 ...

  10. 微信学习总结 02 ngrok 部署本机代码,使外网可以访问

    一 什么是ngrok ngrok is a reverse proxy that creates a secure tunnel from a public endpoint to a locally ...