zoukankan      html  css  js  c++  java
  • linQ 综合练习

    题目


    民族表:
    N001 汉族
    N002 满族
    N003 藏族

    分数表:
    1 S001 Sub001 95
    2 S001 Sub002 66
    3 S001 Sub003 75
    4 S002 Sub001 55
    5 S002 Sub002 58
    6 S002 Sub003 61
    7 S003 Sub001 87
    8 S003 Sub002 84
    9 S003 Sub003 61
    10 S004 Sub001 95
    11 S004 Sub002 91
    12 S004 Sub003 100

    -------------------------------------------------------
    1、使用表格显示,显示的列名格式为:

    学生编号 学生姓名 民族 生日 科目 成绩
    S001 张三 汉族 1995-5-5 语文 95
    S001 张三 汉族 1995-5-5 数学 66
    S001 张三 汉族 1995-5-5 英语 75
    S002 李四 满族 1996-6-6 语文 55
    ....
    ....

    2、组合查询功能,查询种类有:
    学生姓名模糊查
    民族名称模糊查
    生日年份准确查
    科目名称准确查

    3、分页功能,每页显示3条

    思考,分数条件查,可选条件为大于和小于

    进行Linq_Score的字段扩展

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    /// <summary>
    /// Linq_Score 的摘要说明
    /// </summary>
    public partial class Linq_Score
    {
        //学生编号
        public string sscode
        {
            get { return this.Linq_Student.Student_Code; }
        }
        //学生姓名
        public string sname
        {
            get { return this.Linq_Student.Student_Name; }
        }
    
        //民族名称
        public string snation
        {
            get { return this.Linq_Student.Linq_Nation.Nation_Name; }
        }
        //学生生日
        public DateTime sbirthday
        {
            get { return Convert.ToDateTime( this.Linq_Student.Student_Birthday); }
        }
        //科目名称
        public string subjiectname
        {
            get { return this.Linq_Subject.Subject_Name; }
        }
    
       
    
    }
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
        <style type="text/css">
            table
            {
                background-color: blue;
                 100%;
                font-size: 20px;
                text-align: center;
            }
    
            #tr_head
            {
                color: white;
            }
    
            .tr_main
            {
                background-color: white;
            }
        </style>
    </head>
    <body>
        <form id="form1" runat="server">
            学生姓名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
            民族名称:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />
            生日年份:<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox><br />
            科目名称:<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox><br />
            <asp:Button ID="Button1" runat="server" Text="查询" /><br />
            <asp:Repeater ID="Repeater1" runat="server">
                <HeaderTemplate>
                    <table>
                        <tr id="tr_head">
                            <td>学生编号</td>
                            <td>学生姓名</td>
                            <td>民族</td>
                            <td>生日</td>
                            <td>科目</td>
                            <td>成绩</td>
                        </tr>
                </HeaderTemplate>
                <ItemTemplate>
                    <tr class="tr_main">
                        <td><%#Eval("sscode") %></td>
                        <td><%#Eval("sname") %></td>
                        <td><%#Eval("snation") %></td>
                        <td><%#Eval("sbirthday","{0:yyyy年MM月dd日}") %></td>
                        <td><%#Eval("subjiectname") %></td>
                        <td><%#Eval("score") %></td>
                    </tr>
                </ItemTemplate>
                <FooterTemplate></table></FooterTemplate>
            </asp:Repeater>
            当前第【<asp:Label ID="Label1" runat="server" Text="1"></asp:Label>】页,
            <asp:LinkButton ID="lb_prv" runat="server">上一页</asp:LinkButton>
            <asp:LinkButton ID="lb_next" runat="server">下一页</asp:LinkButton>
        </form>
    </body>
    </html>
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    public partial class _Default : System.Web.UI.Page
    {
        //保持数据的统一性是难点
        studentdataDataContext conn = new studentdataDataContext();
        int count = 3;
        List<Linq_Score> lls = new List<Linq_Score>();
        protected void Page_Load(object sender, EventArgs e)
        {
            Button1.Click += Button1_Click;//查询
            lb_prv.Click += lb_prv_Click;//上一页
            lb_next.Click += lb_next_Click;//下一页
            //页面首次加载的时候
            if (!IsPostBack)
            {
                lb_prv.Enabled = false;//上一页不能用
                lb_next.Enabled = true;//下一页不能用
                lls = selectsome();
                var lls1 = lls.Skip((Convert.ToInt32(Label1.Text) - 1) * count).Take(count);//显示数据
                Repeater1.DataSource = lls1;
                Repeater1.DataBind();
            }
    
        }
        //下一页
        void lb_next_Click(object sender, EventArgs e)
        {
            Label1.Text = (Convert.ToInt32(Label1.Text) + 1).ToString();//当前页数
            lls = selectsome();//每次点击都要重新查一下数据
            double num = Math.Ceiling(lls.Count / (count * 1.0));//求最大页数
            var lls1 = lls.Skip((Convert.ToInt32(Label1.Text) - 1) * count).Take(count);//repeater需要绑定的数据
            if (Label1.Text == num.ToString())
            {
                lb_next.Enabled = false;//如果当前页数变为最大页数,下一页按钮不可用
            }
            lb_prv.Enabled = true;//只要点击下一页按钮,上一页按钮就可用
            Repeater1.DataSource = lls1;//数据指向
            Repeater1.DataBind();//数据绑定
        }
    
        //上一页
        void lb_prv_Click(object sender, EventArgs e)
        {
            
            Label1.Text = (Convert.ToInt32(Label1.Text) - 1).ToString();//当前页数
            lls = selectsome();//每次点击重新查询一下数据
            var lls1 = lls.Skip((Convert.ToInt32(Label1.Text) - 1) * count).Take(count);//需要绑定的数据
            if (Label1.Text == "1")
            {
                lb_prv.Enabled = false;//当前页数变为1,上一页按钮不可用
            }
            lb_next.Enabled = true;//只要点击上一页安妮,下一页按钮就可用
            Repeater1.DataSource = lls1;//数据指向
            Repeater1.DataBind();//数据绑定
        }
    
        //查询按钮
        void Button1_Click(object sender, EventArgs e)
        {
            Label1.Text = "1";//只要点击查询按钮,当前页数就变为1
            lb_prv.Enabled = false;//上一页变为不可用
            lb_next.Enabled = true;//下一页变为可用
            lls = selectsome();//查询数据
            int num = lls.Count;//查询数据的条数
            var lls1 = lls.Skip((Convert.ToInt32(Label1.Text) - 1) * count).Take(count);//显示的数据
            if (num <= count)//查询出的条数小于等于要显示的条数,上一页下一页按钮不可用
            {
                lb_prv.Enabled = false;
                lb_next.Enabled = false;
            }
            Repeater1.DataSource = lls1;
            Repeater1.DataBind();
        }
    
        //查询数据方法,返回一个集合
        public List<Linq_Score> selectsome()
        {
            List<Linq_Score> list = new List<Linq_Score>();
            var list1 = conn.Linq_Score.AsQueryable();//查询linq_score表里的所有数据,并不执行,先放在这
            var list2 = conn.Linq_Score.AsQueryable();
            var list3 = conn.Linq_Score.AsQueryable();
            var list4 = conn.Linq_Score.AsQueryable();
    
            if (TextBox1.Text.Length > 0)//如果textbox1不为空
            {
                list1 = conn.Linq_Score.Where(r => r.Linq_Student.Student_Name.Contains(TextBox1.Text));
            }
            if (TextBox2.Text.Length > 0)//如果textbox2不为空
            {
                list2 = conn.Linq_Score.Where(r => r.Linq_Student.Linq_Nation.Nation_Name.Contains(TextBox2.Text));
            }
            if (TextBox3.Text.Length > 0)//如果textbox3不为空
            {
                list3 = conn.Linq_Score.Where(r => r.Linq_Student.Student_Birthday.Value.Year == Convert.ToInt32(TextBox3.Text));
            }
            if (TextBox4.Text.Length > 0)//如果textbox4不为空
            {
                list4 = conn.Linq_Score.Where(r => r.Linq_Subject.Subject_Name == TextBox4.Text);
            }
    
            list = list1.Intersect(list2).Intersect(list3).Intersect(list4).ToList();//求四个集合的交集
            return list;
        }
    
    }

  • 相关阅读:
    Section 3.1 Shaping Regions
    3D@OpenSource
    查找资料
    Section 3.1 Shaping Regions Again
    USACO Contact IOI’98 TLE
    事项ON丰宁坝上草原
    四叉树@POJ1610 Quad Trees
    在TabCtrl上放View@MFC
    CUGB的一场周赛
    贴图程序进展
  • 原文地址:https://www.cnblogs.com/fengsantianya/p/5748655.html
Copyright © 2011-2022 走看看