zoukankan      html  css  js  c++  java
  • LINQ TO SQL

    LINQ就是语言集成查询可以代替ADO,用起来比ADO更简洁更简便,当然这是他的优点。他的重点呢就是查询表达式。
    LINQ查询表达式:
    主要包含三个部分:
    1、获取数据源
    2、创建查询
    3、执行查询
    匿名方法:
    在2.0之前,声明委托的唯一方法就是使用命名方法。在3.0以及更高版本中lambda表达式取代了匿名方法
    lambda表达式:
    1、他呢是一个匿名函数,包含表达式和语句可以用于创建委托
    2、lambda表达式"x=>x * x"读作"x goes to x times x" 

    查询语法和方法语句:
    咱们遵循三要素,首先你要有一个数据源。
    string[] Devices= {"电视" ,"电冰箱","洗衣机","电话","微波炉"};
    然后就是查询语法,
    1、select:
    var SelectDevices = from p in Devices
    select p;
    然后就是一个方法语句用咦个forerch就可以了
    foreach (string dev in SelectDevices)
    {
    Console.WriteLine("字母是:{0}",dev);
    }
    下面是一些复杂一点的查询操作我觉得只要学过数据库的在来学linq就已经很容易写查询语句了。
    2、Where:
    string[] Devices= {"a" ,"b","c","d","e"};
    var SelectDevices = from device in Devices
    where p.StartsWith("b")
    select p;
    foreach (string dev in SelectDevices)
    {
    Console.WriteLine("字母是:{0}",dev);
    }
    还是咱们的三要素,就是和数据库一样中间夹杂了一个where条件
    3、OrderBy
    string[] Devices= {"a" ,"b","c","d","e"};
    var SelectDevices = from p in Devices
    where p.StartsWith("b")
    select p;
    foreach (string dev in SelectDevices)
    {
    Console.WriteLine("字母是:{0}",dev);
    }
    4、连接查询
    LinqDBDataContext db = new LinqDBDataContext(LinqSystem.LinqDBConnectionString);
    var result = from user in db.UserInfo
    join ur in db.UserRole on user.ID equals ur.UserID
    join role in db.Role on ur.RoleID equals role.ID
    where user.ID < 200
    select new { ID = user.ID, //显示ID,用户名,电子邮箱和角色
    UserName = user.Username,
    Email = user.Email,
    RoleName = role.RoleName
    };
    dl_List.DataSource = result;
    dl_List.DataBind();

    5、聚合查询
    LinqDBDataContext db = new LinqDBDataContext(LinqSystem.LinqDBConnectionString);
    var result = from p in db.Product
    select p; //计算商品最高价格和最低价格
    decimal maxPrice = result.Max(p => p.Price.Value);
    decimal minPrice = result.Min(p => p.Price.Value); //显示最高价格和最低价格
    Response.Write(string.Format("最高价格:{0},最低价格:{1}",maxPrice,minPrice));
    6、分组查询
    LinqDBDataContext db = new LinqDBDataContext(LinqSystem.LinqDBConnectionString);
    var result = from p in db.Product
    group p by p.CategoryID into g
    orderby g.Key
    select new
    {
    //获取商品和分类名称
    ProductName =g.First().Name,
    CatagoryName = (from u in db.Category
    where u.ID==g.Key
    select u
    ).First().Name
    }; //数据绑定
    dl_List.DataSource = result;
    dl_List.DataBind();

    存储过程:
    1、添加
    create proc Pr_InsertCategory (
    @Name varchar(50)=null,
    @ParentID int=null,
    @ShowOrder int=null,
    @Remark text=null )
    as
    insert into Category ([Name],ParentID,ShowOrder,Remark) values
    (@Name,@ParentID,@ShowOrder,@Remark)
    go
    添加的执行方法:
    string name = TextBox2.Text;
    int id = int.Parse(TextBox3.Text);
    tb_ABc tb = new tb_ABc()
    {
    sname = name,
    Area_ID = id
    };
    dc.tb_ABc.InsertOnSubmit(tb);
    dc.SubmitChanges();
    bind();
    用存储过更简洁
    dc.p_AddCreate(name,id);
    bind();
    2、删除
    create proc DeleteCategroy
    @ID int=null
    as
    delete from Category where ID=@ID
    go
    删除的执行方法:
    (要调用表的"RowDeleting"事件)
    string id = GridView1.DataKeys[e.RowIndex].Value.ToString() ;
    var Restr = from a in dc.tb_ABc
    where a.Sid.ToString() == id
    select a;
    dc.tb_ABc.DeleteAllOnSubmit(Restr);
    dc.SubmitChanges();
    bind();
    温馨提示
    : if (IsPostBack)
    {
    return;
    }

  • 相关阅读:
    超酷图片压缩工具,就是不支持批量
    eclipse java热加载
    mysql 突然报错,连接不上
    svn问题终极解决办法
    svn经常困扰我的问题
    洛谷 P3628
    CodeForces 1091H
    委托的实际应用
    WPF 小知识点001
    C# 扩展方法一
  • 原文地址:https://www.cnblogs.com/wangxlei/p/5958022.html
Copyright © 2011-2022 走看看