• C#--web__LINQ简介


    LinQ to SQL
    LinQ - 集成化查询语言。
    LinQ to SQL ——查询SQLServer数据库
    LinQ to Object —— 查询内存中的集合

    ORM思想:O - R - M
    Object 对象——实体类
    Relation 关系数据库——数据库中的表
    Mapping 映射——把类和表;字段和列对应。

    LinQ生成实体类的结构:
    1.生成一个DataContext类。相当于程序内存和硬盘数据库之间的桥梁。
    2.生成一系列的实例类,与表是一一对应的。
    3.每个实体类中都有与表中列相应的属性(值类型的属性都是可以为空的类型bool? int? double?)
    4.数据库中表和表之间的关联关系,被转化成内存中类中的成员变量。

    一、增
    1.造对象
    2.跟context说一声
    3.context提交
    例:
    //创建内存对象与数据库之间的桥梁
    MyDBDataContext context = new MyDBDataContext();

    //第一步:造实体对象
    Info data = new Info();
    data.Code = "p101";
    data.Name = "张飞";
    data.Sex = true;
    data.Nation = "n001";
    data.Birthday = new DateTime(1990, 3, 15);

    //第二步:跟Context说一下,提交的时候对它执行插入操作
    context.Info.InsertOnSubmit(data);

    //第三步:提交
    context.SubmitChanges();

    二、删
    1.从数据库中找出来
    2.跟context说一下,提交的时候,删除
    3.提交

    //创建内存对象与数据库之间的桥梁
    MyDBDataContext context = new MyDBDataContext();

    //第一步:找出要删除的对象。
    //var query = from p in context.Info where p.Code == "p101" select p;
    var query = context.Info.Where(p => p.Code == "p101");
    Info data = query.First();

    //第二步:跟Context说一下,提交的时候把这个对象给删掉。
    context.Info.DeleteOnSubmit(data);
    //第三步:提交
    context.SubmitChanges();

    三、改
    1.从数据库中找出对象来
    2.把对象的值改一下。
    3.提交送回去。

    //创建内存对象与数据库之间的桥梁
    MyDBDataContext context = new MyDBDataContext();

    //第一步:从数据库找出对象来
    var query = context.Info.Where(p=>p.Code == "p009");
    Info data = query.First();

    //第二步:改
    data.Name = "田七";
    data.Sex = false;

    //第三步:提交
    context.SubmitChanges();

    四、查
    LINQ语句写法 扩展方法

    没有条件

    查全部:(1)DataClassesDataContext context = new DataClassesDataContext();
    var qu = context.Info;
    GridView1.DataSource = qu;
    GridView1.DataBind();
    (2)DataClassesDataContext context = new DataClassesDataContext();
    var qu=from p in context.Info select p;
    GridView1.DataSource = qu;
    GridView1.DataBind();


    有条件

    等 值

    :(1)var qu = context.Info(表名) Where(p=>p.列名=="该列名的一个值");
    (2)var qu = from p in context.Info(表名) where p.列名 =="该列名的一个值" select p;
    不等值


    : (1)var qu = context.Info(表名).Where(p=>p.列名<new 该列一个相应的值(【时间、整数】);
    (2)var qu = from p in context.Info(表名) where p.列名 > new 该列一个相应的值(【时间、整数】 select p;


    与 或
    模糊
    以..开头
    StartsWiths

    :(1)var qu = context.Work(表名).Where(p=>p.列名.StartsWith("一个该列的数据中首位可能含有的字"));
    (2)var qu = from p in context.Work(表名) where p.列名.StartsWith("一个该列的数据中首位可能含有的字") select p;


    以..结尾
    EndsWiths

    :(1)var qu = context.Work(表名).Where(p=>p.列名.EndsWith("一个该列的数据中尾位可能含有的字"));
    (2)var qu = from p in context.Work(表名) where p.列名.EndsWith("一个该列的数据中尾位可能含有的字") select p;

    包含..
    Contains()
    :(1) var qu = context.Work(表名).Where(p=>p.列名.Contains("一个该列的数据中可能含有的字"));
    (2)var qu =from p in context.Work(表名) where p.列名.Contains("一个该列的数据中可能含有的字") select p;


    指定位置是...
    Substring(...) == "值"


    :(1)var qu = context.Work(表名).Where(p=>p.列名.Substring(1,1)=="该列中被指定位置的字符或字符串");
    (2)var qu = from p in context.Work(表名) where p.列名.Substring(1, 1) == "该列中被指定位置的字符或字符串" select p;

    Substring(a,b)----a:指一个字符串分为单个字符的数组中(从0开始),从a开始(第a个字符)的往后b个字符的截取的一段字符串

    链接查询和子查询有语法,但很少写。
    直接可使用对象之间的关系对象进行操作,Linq会自动为我们生成出相应的连接语句或子查询语句。

    排序:
    orderby 属性名 升序

    :(1)var qu = context.Info(表名).OrderBy(p=>p.列名);
    (2)var qu= from p in context.Info(表名) orderby p.列名 select p;


    orderby 属性名 descending 降序

    :(1)var qu = context.Info(表名).OrderByDescending(p => p.列名);
    var qu= from p in context.Info((表名) orderby p.列名 descending select p;


    扩展方法:
    OrderBy()
    OrderByDescending()

    统计函数。
    把LinQ语句括起来,调用相应的方法即可
    Count()
    Sum(p=>p.属性名
    Average(p=>p.属性名)
    Max(p=>p.属性名)
    Min(p=>p.属性名)

    :指定相应的输出(比如:label.text=qu.tostring();)

    取集合第一个对象。
    First()


    分页查询:
    skip(要跳过的条数).take(要取出来的条件)

    :var query = (from p in context.Work(表名) select p).Skip(6).Take(3);

    集合操作:交、并、差
    var q1 = context.Info.Where(p => p.Nation != "n001");
    var q2 = context.Info.Where(p => p.Sex == true);

    交集:var query = q1.Intersect(q2);
    并集:var query = q1.Union(q2);
    差集:var query = q1.Except(q2);

  • 相关阅读:
    map内置函数、lambda表达式、快捷生成想要的列表、filter内置函数
    python生成随机验证码
    Redis数据库之概念与创建服务
    JavaScript中的类
    python之with的使用
    PHP变量名区分大小写,函数名不区分大小写
    php curl基本操作
    PHP生成随机字符串包括大小写字母
    PHP多例模式
    一个关于动态编译时 Evidence的问题
  • 原文地址:https://www.cnblogs.com/xianshui/p/4545966.html
Copyright © 2020-2023  润新知