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. 设计模式之享元模式(Flyweight)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于怎样创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  2. 我学的是设计模式的视频教程——装饰图案,装饰图案VS代理模式

    课程视频 装饰模式 装饰模式VS代理模式1 装饰模式VS代理模式2 课程笔记 课程笔记 课程代码 课程代码 新课程火热报名中 课程介绍 版权声明:本文博主原创文章,博客,未经同意不得转载.

  3. ZOJ 1649:Rescue(BFS)

    Rescue Time Limit: 2 Seconds      Memory Limit: 65536 KB Angel was caught by the MOLIGPY! He was put ...

  4. 未能加载文件或程序集 Newtonsoft.Json, Version=4.5.0.0 的报错,解决方法

    使用httpclient测试webapi的时候客户端报错: {"未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, P ...

  5. Flex自定义组件开发之日周月日期选择日历控件

    原文:Flex自定义组件开发之日周月日期选择日历控件         使用过DateField的我们都知道,DateField 控件是用于显示日期的文本字段,字段右侧带有日历图标.当用户在控件边框内的 ...

  6. JavaScript之再谈回调与闭包

    前些阵子写了几篇关于回调和闭包的博文,感觉自己都是似懂非懂,最近在项目中又碰到了类似的情况,故在此咱们来重弹js中的回调与闭包. 先说说回调: 百度百科: 回调函数就是一个通过函数指针调用的函数.如果 ...

  7. 自己定义GSON类型适配器

    Exception in thread "main" java.lang.RuntimeException: No-args constructor for class java. ...

  8. Cocos2d-x实现Android的Toast特征

    1.Toast Android的Toast是View视图,显示少量的信息.主要用于一些提示和帮助.本文实现了Toast最主要的操作能, 代码例如以下: //PacToast.h #include &q ...

  9. ocp11g培训内部教材_053课堂笔记(043)_数据备份

    053:数据库高级管理: 目录 第一部分:数据库备份与恢复... 4 第一章:备份恢复概述... 4 1.1 备份的意义: 4 1.2 数据库故障的类型:... 4 1.3 制定你的备份和恢复的计划. ...

  10. java_Eclipse中SVN的安装步骤(两种)和使用方法

    若是只要site地址: http://subclipse.tigris.org/update_1.6.x,  下边可以忽略 一.给Eclipse安装SVN,最常见的有两种方式:手动方式和使用安装向导方 ...