linq主要有3种,linq to sql,linq to XML,Linq to Object

linq to sql。

这里没有通过相应的类,生成相应的数据库中的表。没有用流行的编码优先。

只是为了自己的练习。

通过生成的linq 类,把数据库中的表,存储过程,视图等映射出来。其中数据上下文是链接实体类和数据库的桥梁,这是非常重要的。

现在开始Linq to sql之旅。数据库中的代码如下所示:

--查询数据库中是否含有数据库DB_Student,有则删除
if exists(select 1 from sys.sysdatabases where [name]='DB_Student')
    drop database DB_Student
go
--创建学生是数据库
create database DB_Student
go
--查看是否存在学生表,有则删除
use DB_Student
if exists(select 1 from sys.sysobjects where [name]='T_Student')
    drop table T_Student
go
--创建学生表
use DB_Student
create table T_Student
(
    stuNumber varchar(8) not null,
    stuName varchar(20) not null,
    stuAge int not null,
    stuSex char(2) not null
)
go
--添加主键约束
use DB_Student
alter table T_Student
add constraint PK_T_Student_stuNumber primary key(stuNumber)
go

--查看是否存在教师表,有则删除
use DB_Student
if exists(select 1 from sys.sysobjects where [name]='T_Teacher')
    drop table T_Teacher
go
--创建教师表
use DB_Student
create table T_Teacher
(
    teacherNumber varchar(6) not null,
    teacherName varchar(20) not null
)
go
--为教师表创建主键约束
use DB_Student
alter table T_Teacher
add constraint PK_T_Teacher_teacherNumber primary key(teacherNumber)
go
--查看是否存在课程表,有则删除
use DB_Student
if exists(select 1 from sys.sysobjects where [name]='T_Cource')
    drop table T_Cource
go
--创建课程表
use DB_Student
create table T_Cource
(
    courceNumber varchar(4) not null,
    courceName varchar(20) not null,
    teacherNumber varchar(6) not null
)
go

--为课程表添加主键约束和外键约束
use DB_Student
alter table T_Cource
    add constraint PK_T_Cource_courceNumber primary key(courceNumber),
        constraint FK_T_Cource_T_Teacher_teacherNumber foreign key(teacherNumber) references     T_Teacher(teacherNumber)
go

--查看是否存在成绩表,有则删除
use DB_Student
if exists(select 1 from sys.sysobjects where [name]='T_Score')
    drop table T_Score
go

--创建成绩表
use DB_Student
create table T_Score
(
    stuNumber varchar(8) not null,
    courceNumber varchar(4) not null,
    score float
)
go

--为成绩表添加主键约束和外键约束
use DB_Student
alter table T_Score
    add constraint PK_T_Score_stuNumber_courceNumber primary key(stuNumber,courceNumber),
        constraint FK_T_Score_T_Student_stuNumber foreign key(stuNumber) references T_Student(stuNumber),
        constraint FK_T_Score_T_Cource_courceNumber foreign key(courceNumber) references T_Cource(courceNumber)
go

--为学生表插入数据
insert into T_Student
    select '2091727','李阳','18','男' union
    select '2091728','李芳','19','女' union
    select '2091729','李丹','18','男' union
    select '2091721','黄阳','17','女' union
    select '2091722','黄渤','18','男' union
    select '2091723','黄波','20','男' union
    select '2091724','何洁','19','女' union
    select '2091725','何丹','17','男' union
    select '2091726','何宇','19','女'
go

--为教师表插入数据
insert into T_Teacher
    select '01','李刚' union
    select '02','李双江' union
    select '03','邓楠'
go
--为课程表插入数据
insert into T_Cource
    select '001','微机原理','01' union
    select '002','西方音乐历史','02' union
    select '003','会计学','03'
go
--为成绩表插入数据    
insert into T_Score
    select '2091721','001','92' union
    select '2091721','002','59' union
    select '2091721','003','81' union
    select '2091722','001','58' union
    select '2091722','002','66' union
    select '2091722','003','83' union
    select '2091723','001','82' union
    select '2091723','002','64' union
    select '2091723','003','71' union
    select '2091724','001','77' union
    select '2091724','002','53' union
    select '2091724','003','56' union
    select '2091725','001','55' union
    select '2091725','002','57' union
    select '2091725','003','71' union
    select '2091726','001','90' union
    select '2091726','002','88' union
    select '2091726','003','82' union
    select '2091727','001','57' union
    select '2091727','002','83' union
    select '2091727','003','59' union
    select '2091728','001','54' union
    select '2091728','002','93' union
    select '2091728','003','48' union
    select '2091729','001','61' union
    select '2091729','002','58' union
    select '2091729','003','93'
go
    
    
select *
from T_Cource
select *
from T_Score
select *
from T_Student
select *
from T_Teacher

通过数据库生成数据上下文开始在VS里编码:

public partial class Practice1 : System.Web.UI.Page
    {
        DB_StudentDataContext ctx = new DB_StudentDataContext();
        protected void Page_Load(object sender, EventArgs e)
        {
            dataBind();
        }

void dataBind()
        {
            //获取数据库中的T_Student表数据
            var list = ctx.T_Student.ToList();
            GridView1.DataSource = list;
            GridView1.DataBind();
        }
    }

这就是后台代码,前台显示如下:

看只需要var list = ctx.T_Student.ToList();这样的一句代码,就能够绑定数据,和以前ADO.NET读取数据填充到dataset数据集相比省了很多代码,看是不是很方便。

开始where 练习

/**************where 练习*******************/
            //获取数据库中的T_Student表数据
            var list = ctx.T_Student.Where(s => s.stuName == "黄阳");
            //或者
            var list1 = from s in ctx.T_Student
                        where s.stuName == "黄阳"
                        select s;
            //查询名字为"黄阳"且性别为女的同学
            var list3 = ctx.T_Student.Where(s => (s.stuName == "黄阳")&&(s.stuSex=="女"));
            var list4 = from s in ctx.T_Student
                        where s.stuName == "黄阳"
                                && s.stuSex == "女"
                        select s;

var list5 = ctx.T_Student.Where(s => s.stuName == "黄阳").Where(t => t.stuSex == "女");
                //上边三个都是一样的结果

  //查询表中的第一条记录
            var list6 = ctx.T_Student.First();
            //查询名字为“黄阳”的第一条记录
            var list7 = ctx.T_Student.First(s=>s.stuName=="黄阳");

Linq无聊练习系列1--where练习的更多相关文章

  1. Linq无聊练习系列8---开放式并发事务,null和 DateTime,string操作练习

    /*********************开放式并发事务,null和 DateTime,string操作练习**********************************/ //所谓并发,就是 ...

  2. Linq无聊练习系列6--Any/All/Contains/Concat/Union/Intersect/Except/take/skip/SqlMethods操作练习

    /*********************Any/All/Contains/Concat/Union/Intersect/Except/take/skip/SqlMethods操作练习******* ...

  3. Linq无聊练习系列7----Insert,delete,update,attach操作练习

    /*********************Insert,delete,update,attach操作练习**********************************/            ...

  4. Linq无聊练习系列5--OrderBy ,Groupby练习

    /**************OrderBy ,Groupby练习*******************/                       //按学生的总分数按降序排列排序         ...

  5. Linq无聊练习系列4--join练习

    /**************join 练习*******************/            //对于1对多关系            var list =from c in ctx.T ...

  6. Linq无聊练习系列3--聚合函数练习

    /**************聚合函数 练习*******************/            //求学生的总数量            var list = ctx.T_Student. ...

  7. Linq无聊练习系列2--select/distinct练习

    void dataBindByWhere()        { /**************select/distinct 练习*******************/            //获 ...

  8. LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据

    http://www.cnblogs.com/yukaizhao/archive/2010/05/13/linq_to_sql_1.html LINQ和 LINQ to SQL 都已经不是一个新事物了 ...

  9. LINQ之路系列文章导读

    本系列文章将会分为3篇来进行阐述,如下: LINQ之路(1):LINQ基础 LINQ之路(2):LINQ to SQL本质 LINQ之路(3):LINQ扩展

随机推荐

  1. Effective C++:条款14:在中小企业资源管理copying表现

    (一) 在一项条款说法auto_ptr和tr1::share_ptr适合heap-based资源.然而,并非所有的资源都heap-based的.换句话说不tr1::shared_ptr 和 auto_ ...

  2. Tips & Tricks:Apache log4j简明教程(二)

    在上一讲Apache log4j简明教程(一)中介绍了log4j的基本概念,配置文件,以及将日志写入文件的方法,并给出了一个详细的示例.这一讲,我在继续谈一谈如何使用log4j将日志写入MySQL数据 ...

  3. Android批量图片加载经典系列——使用二级缓存、异步网络负载形象

    一.问题描写叙述 Android应用中常常涉及从网络中载入大量图片,为提升载入速度和效率,降低网络流量都会採用二级缓存和异步载入机制.所谓二级缓存就是通过先从内存中获取.再从文件里获取,最后才会訪问网 ...

  4. 鸟哥的私房菜上 xpenguins 设备(ubuntu 12.04)

    看了一个暑假linux,我觉得很辛苦啊,要很好地利用linux并不是的easy... 今天装了一下鸟哥课后给的xpenguins软件,就是桌面特性软件.会有非常多企鹅下落,本以为能够非常轻松的搞定.没 ...

  5. ABP模块系统

    ABP模块系统 基于DDD的现代ASP.NET开发框架--ABP系列之4.ABP模块系统 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ABP ...

  6. duplicate symbol _*** in:

    duplicate symbol _kReachabilityChangedNotification in: 问题出在同一个文件被引用两次,在项目中找到引用的地方,删掉对应的引用

  7. 6最好的之一 HTML5/CSS3 演示(PPT)框架

    HTML 是全世界最流行的网页编程语言.而HTML5是这门语言的升级版本号.越来越多的开发人员和设计师開始使用HTML5.以下介绍几个 HTML5/CSS3 的演示工具和框架,你能够用它们来创建你的网 ...

  8. Java数据结构与算法(4) - ch04队列(Queue和PriorityQ)

    队列: 先进先出(FIFO). 优先级队列: 在优先级队列中,数据项按照关键字的值有序,关键字最小的数据项总在对头,数据项插入的时候会按照顺序插入到合适的位置以确保队列的顺序,从后往前将小于插入项的数 ...

  9. Swift语言指南(四)--类型安全和类型推断

    原文:Swift语言指南(四)--类型安全和类型推断 Swift是一门类型安全语言,类型安全语言需要代码里值的类型非常明确.如果你的代码中有部分值需要String类型,你就不能错误地传递Int. 鉴于 ...

  10. 让Docker功能更强大的10个开源工具

    让Docker功能更强大的10个开源工具 更好的管理.Web前端程序.更深入地了解容器应用程序,Docker生态系统正在迅速发展,这还得归功于其充满活力的开源社区. 软件项目的成功常常根据其催生的生态 ...