Linq学习笔记四之linq to sql 的基本操作

    xiaoxiao2021-12-14  43

    首先需要在项目中新增一个 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();

    转载请注明原文地址: https://ju.6miu.com/read-963783.html

    最新回复(0)