Linq增删改查字段扩展以及一个小练习

字段扩展:

因为Linq已经自动生成了一个对应表明的类来封装字段,所以扩展的时候要建立一个名字相同的类并在class后面加上partial进行扩展。扩展的时候this代表这个表,通过this可以.出这个表中的列名以及相关的外键表的表名。

Linq基本操作:

首先要创建Linq类,把相关的表拖进VS。

然后实例化Linq类,通过类名.表名.ToList();来获取所有数据。.AsQueryable();是获得这个方法但是还没有执行。

Linq高级查询:

通过类名.表名.where(r=>r.XXX)来进行条件查询。XXX表示点出来的列名,直接在后面.出方法写条件。where换成Count,Max,Min等方法也可以获得相应的结果。

分页:.Skip().Take()方法,前者是跳过的数据的条数,后者为获取的数据的条数。

获取交集:A.Intersect(B);A B都是通过不同条件查询出的数据,此方法可以连续调用无数个。

小练习:

HTML界面:

 1 <body>
 2     <form id="form1" runat="server">
 3         <table>
 4             <tr>
 5                 <td>学生编号</td>
 6                 <td>学生姓名</td>
 7                 <td>民族</td>
 8                 <td>生日</td>
 9                 <td>科目</td>
10                 <td>成绩</td>
11             </tr>
12             <asp:Repeater ID="Repeater1" runat="server">
13                 <ItemTemplate>
14                     <tr>
15                         <td><%#Eval("Scode") %></td>
16                         <td><%#Eval("Sname") %></td>
17                         <td><%#Eval("Snation") %></td>
18                         <td><%#Eval("Sbirthday","{0:yyyy-MM-dd}") %></td>
19                         <td><%#Eval("Ssubjectname") %></td>
20                         <td><%#Eval("Score","{0:#.##}") %></td>
21                     </tr>
22                 </ItemTemplate>
23             </asp:Repeater>
24         </table>
25         学生姓名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
26         学生民族:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />
27         学生生日:<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="True">
28             <asp:ListItem>请选择</asp:ListItem>
29         </asp:DropDownList><asp:DropDownList ID="DropDownList2" runat="server" AppendDataBoundItems="True">
30             <asp:ListItem>请选择</asp:ListItem>
31         </asp:DropDownList><asp:DropDownList ID="DropDownList3" runat="server" AppendDataBoundItems="True">
32             <asp:ListItem>请选择</asp:ListItem>
33         </asp:DropDownList><br />
34         所学科目:<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox><br />
35         考试成绩:<asp:DropDownList ID="DropDownList4" runat="server" AppendDataBoundItems="True">
36             <asp:ListItem>请选择</asp:ListItem>
37             <asp:ListItem>&gt;</asp:ListItem>
38             <asp:ListItem>&lt;</asp:ListItem>
39             <asp:ListItem>=</asp:ListItem>
40         </asp:DropDownList><asp:TextBox ID="TextBox3" runat="server"></asp:TextBox><br />
41         <asp:Button ID="Button1" runat="server" Text="查询" /><br />
42         <asp:LinkButton ID="LinkButton1" runat="server">上一页</asp:LinkButton>
43         <asp:LinkButton ID="LinkButton2" runat="server">下一页</asp:LinkButton>
44     </form>
45 </body>

扩展字段:

 1 public partial class Linq_Score
 2 {
 3     /// <summary>
 4     /// 显示学号
 5     /// </summary>
 6     public string Scode
 7     {
 8         get { return this.Linq_Student.Student_Code; }
 9     }
10     /// <summary>
11     /// 显示名字
12     /// </summary>
13     public string Sname
14     {
15         get { return this.Linq_Student.Student_Name; }
16     }
17     /// <summary>
18     /// 显示民族
19     /// </summary>
20     public string Snation
21     {
22         get { return this.Linq_Student.Linq_Nation.Nation_Name; }
23     }
24     /// <summary>
25     /// 显示生日
26     /// </summary>
27     public DateTime? Sbirthday
28     {
29         get { return this.Linq_Student.Student_Birthday; }
30     }
31     /// <summary>
32     /// 显示课程名称
33     /// </summary>
34     public string Ssubjectname
35     {
36         get { return this.Linq_Subject.Subject_Name; }
37     }
38 }

C#后台:

  1 ChangYongDataContext CY = new ChangYongDataContext();
  2     protected void Page_Load(object sender, EventArgs e)
  3     {
  4         Button1.Click += Button1_Click;//点击查询
  5         LinkButton1.Click += LinkButton1_Click;//点击上一页
  6         LinkButton2.Click += LinkButton2_Click;//点击下一页
  7         if (!IsPostBack)
  8         {
  9             Session["num"] = 0;
 10             Session["Count"] = 3;
 11             Session["Page"] = 0;
 12             Repeater1.DataSource = Linq().Skip(Convert.ToInt32(Session["Page"]) * Convert.ToInt32(Session["Count"])).Take(Convert.ToInt32(Session["Count"]));
 13             Repeater1.DataBind();
 14             for (int i = 1980; i <= DateTime.Now.Year; i++)
 15             {
 16                 DropDownList1.Items.Add(i.ToString());
 17             }
 18             for (int i = 1; i <= 12; i++)
 19             {
 20                 DropDownList2.Items.Add(i.ToString());
 21             }
 22             for (int i = 1; i <= 31; i++)
 23             {
 24                 DropDownList3.Items.Add(i.ToString());
 25             }
 26             LinkButton1.Enabled = false;
 27         }
 28     }
 29     //下一页
 30     void LinkButton2_Click(object sender, EventArgs e)
 31     {
 32         Session["Page"] = Convert.ToInt32(Session["Page"]) + 1;
 33         Repeater1.DataSource = Linq().Skip(Convert.ToInt32(Session["Page"]) * Convert.ToInt32(Session["Count"])).Take(Convert.ToInt32(Session["Count"]));
 34         Repeater1.DataBind();
 35         if ((Convert.ToInt32(Session["Page"]) + 1) >= Math.Ceiling((Linq().Count / 3.0)))
 36         {
 37             LinkButton2.Enabled = false;
 38         }
 39         LinkButton1.Enabled = true;
 40     }
 41     //上一页
 42     void LinkButton1_Click(object sender, EventArgs e)
 43     {
 44         Session["Page"] = Convert.ToInt32(Session["Page"]) - 1;
 45         Repeater1.DataSource = Linq().Skip(Convert.ToInt32(Session["Page"]) * Convert.ToInt32(Session["Count"])).Take(Convert.ToInt32(Session["Count"]));
 46         Repeater1.DataBind();
 47         if (Convert.ToInt32(Session["Page"]) == 0)
 48         {
 49             LinkButton1.Enabled = false;
 50         }
 51         LinkButton2.Enabled = true;
 52     }
 53     //查询
 54     void Button1_Click(object sender, EventArgs e)
 55     {
 56         Session["Page"] = 0;
 57         Session["num"] = 1;
 58         Repeater1.DataSource = Linq().Skip(Convert.ToInt32(Session["Page"]) * Convert.ToInt32(Session["Count"])).Take(Convert.ToInt32(Session["Count"]));
 59         Repeater1.DataBind();
 60         if ((Convert.ToInt32(Session["Page"]) + 1) >= Math.Ceiling((Linq().Count / 3.0)))
 61         {
 62             LinkButton2.Enabled = false;
 63         }
 64         else
 65         {
 66             LinkButton2.Enabled = true;
 67         }
 68     }
 69     /// <summary>
 70     /// 查询语句
 71     /// </summary>
 72     /// <returns></returns>
 73     public List<Linq_Score> Linq()
 74     {
 75         var list1 = CY.Linq_Score.AsQueryable();
 76         var list2 = CY.Linq_Score.AsQueryable();
 77         var list3 = CY.Linq_Score.AsQueryable();
 78         var list4 = CY.Linq_Score.AsQueryable();
 79         var list5 = CY.Linq_Score.AsQueryable();
 80         if (TextBox1.Text.Trim().Length > 0)
 81         {
 82             list1 = list1.Where(r => r.Linq_Student.Student_Name.Contains(TextBox1.Text.Trim()));
 83         }
 84         if (TextBox2.Text.Trim().Length > 0)
 85         {
 86             list2 = list2.Where(r => r.Linq_Student.Linq_Nation.Nation_Name.Contains(TextBox2.Text.Trim()));
 87         }
 88         if (Session["num"].ToString() == "1" && (DropDownList1.Text != "请选择" || DropDownList2.Text != "请选择" || DropDownList3.Text != "请选择"))
 89         {
 90             list3 = CY.Linq_Score.Where(r => r.Linq_Student.Student_Birthday.Value.Year.ToString() == DropDownList1.Text || r.Linq_Student.Student_Birthday.Value.Month.ToString() == DropDownList2.Text || r.Linq_Student.Student_Birthday.Value.Date.ToString() == DropDownList3.Text);
 91         }
 92         if (TextBox4.Text.Trim().Length > 0)
 93         {
 94             list4 = list4.Where(r => r.Linq_Subject.Subject_Name == TextBox4.Text.Trim());
 95         }
 96         if (TextBox3.Text.Trim().Length > 0 && DropDownList4.Text != "请选择")
 97         {
 98             if (DropDownList4.Text == ">")
 99             {
100                 list5 = list5.Where(r => r.Score > Convert.ToDecimal(TextBox3.Text));
101             }
102             else if (DropDownList4.Text == "<")
103             {
104                 list5 = list5.Where(r => r.Score < Convert.ToDecimal(TextBox3.Text));
105             }
106             else if (DropDownList4.Text == "=")
107             {
108                 list5 = list5.Where(r => r.Score == Convert.ToDecimal(TextBox3.Text));
109             }
110         }
111         var list = list1.Intersect(list2).Intersect(list3).Intersect(list4).Intersect(list5);
112         return list.ToList();
113   }
时间: 2024-08-09 02:19:16

Linq增删改查字段扩展以及一个小练习的相关文章

Linq 增删改查

 Linq 增删改 查 Linq高集成化的数据访问类,它会自动映射数据库结构,将表名完整映射成为类名, 将列名完整映射成字段名,数据库数据访问,能大大减少代码量. 1.首先表格要有主外键关系 2.创建数据库 添加新项 LinQ to SQL类 ,起名为数据库名字 3.服务器资源管理器 --连接到数据库(相当于ADO.NET中的连接字符串) 4.服务器名:.:使用SQL Sever身份验证:用户名sa;选择或输入数据库名称: 将需要的表拖拽到其中(相当于ADO.NET中生存实体类) 5.创建数据访

Webform(Linq增删改查)

Linq高集成化的数据访问类,它会自动映射数据库结构,将表名完整映射成为类名,将列名完整映射成字段名数据库数据访问,能大大减少代码量.(1)Linq创建添加LINQ to SQL类,类名需与要连接的数据库名一样 Linq文件是dbml结尾,一个数据库对应一个Linq文件(2)数据库连接打开服务器资源管理器,点击下图黄圈内按钮,连接到数据库,弹出添加连接对话框,填写服务器名(.),选择使用什么身份验证,然后您要连接的数据库,然后将您要用的数据库拉到类中. (3)数据扩展 新建一个部分类(关键字:p

Sql Server增删改查字段的语法

添加字段的SQL语句的写法: 通用式: alter table [表名] add [字段名] 字段属性 default 缺省值 default 是可选参数 增加字段: alter table [表名] add 字段名 smallint default 0 增加数字字段,整型,缺省值为0 alter table [表名] add 字段名 int default 0 增加数字字段,长整型,缺省值为0 alter table [表名] add 字段名 single default 0 增加数字字段,单

[elk]Mutate filter plugin增删改查字段

Mutate filter plugin参考: https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html 在线匹配: http://grokdebug.herokuapp.com/ grok github正则: https://github.com/kkos/oniguruma/blob/master/doc/RE logstash grok目录: /usr/local/logstash/vendor

mongodb的学习笔记一(集合和文档的增删改查)

1数据库的增删改查 一.增加一个数据库: use blog-----切换到指定的数据库,如果数据库不存在,则自动创建该数据库(新建的数据库,如果没有存储对应的集合,是不会显示出来的) 二.删除一个数据库 1首先用use 切换到你需要删除的数据库 use test 2然后执行db.dropDatabase()命令 db.dropDatabase() 三.修改一个数据库的名字 db.copyDatabase(fromdb, todb, fromhost) fromdb:源数据库, todb:目标数据

Hibernate进行对象的增删改查

首先我们看看hibernate手动配置步骤 (这个了解一点就可以了,以后是不会自己全部手动配置的) 1.    创建WEB项目 2       下载hibernate-release-4.3.11.Final.zip,并解压. 3       将hibernate必须的包加入lib 4        打开hibernate-release-4.3.11.Final\lib\required文件夹,导入jar文件: 5       打开hibernate-release-4.3.11.Final\

JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(三):两个Viewmodel搞定增删改查

前言:之前博主分享过knockoutJS和BootstrapTable的一些基础用法,都是写基础应用,根本谈不上封装,仅仅是避免了html控件的取值和赋值,远远没有将MVVM的精妙展现出来.最近项目打算正式将ko用起来,于是乎对ko和bootstraptable做了一些封装,在此分享出来供园友们参考.封装思路参考博客园大神萧秦,如果园友们有更好的方法,欢迎讨论. KnockoutJS系列文章: JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(一) JS组件

Android下数据库操作——增删改查

Android下数据库第一种方式增删改查 1.创建一个帮助类的对象,调用getReadableDatabase方法,返回一个SqliteDatebase对象 2.使用SqliteDatebase对象调用execSql()做增删改,调用rawQuery方法做查询. 特点:增删改没有返回值,不能判断sql语句是否执行成功.sql语句手动写,容易写错 private MySqliteOpenHelper mySqliteOpenHelper;     public InfoDao(Context co

Django 连接数据库,数据库表字段的增删改查

如何获取前端数据 request方法: 获取前端数据的方式: request.POST(获取表单中发送的数据).request.GET  (获取的是url后面跟的数据) 前端:注意name属性的值即为后台大字典的key ,即通过key来取到前端发过来的数据 后端: views :  request.POST.get()  方法默认取列表中的最后一个值,request.POST.getlist()    取列表 数据库:Django连接数据库配置: 1.   setting.py : 配置数据库