热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

LinqToDataSet总结

使用LINQ技术查询DATASET中的单个表privatevoidForm1_Load(objectsender,EventArgse){stringConnectionStrin
  • 使用LINQ技术查询DATASET中的单个表

    private void Form1_Load(object sender, EventArgs e)

        {

            string ConnectionString = "Data Source=DESKTOP-M4PUOAS\\SQLEXPRESS;Initial Catalog=db_TomeTwo;User ID=sa;Password=wh1090220084";//声明连接字符串

            using (SqlConnection conn = new SqlConnection(ConnectionString))//创建数据库连接对象

            {

                string sqlstr = "select * from tb_Bookinfo";//定义查询语句

                SqlDataAdapter da = new SqlDataAdapter(sqlstr, conn);//创建数据桥接器对象

                DataSet ds = new DataSet();//创建数据对象

                da.Fill(ds, "tb_Bookinfo");//填充数据集

                //查找3月份出版的图书

                var result = from b in ds.Tables["tb_Bookinfo"].AsEnumerable()

                             where b.Field("b_pub_date").Month == 3

                             select new

                             {

                                 bookname = b["b_name"].ToString(),

                                 author = b["b_pub_date"].ToString()

                             };

                foreach (var item in result)//遍历图书的书名和出版日期

                {

                   richTextBox1.Text +="书名:" + item.bookname + ";出版日期:" + item.author+"\n";

                }

            }

        }

二、使用LINQ技术对DataSet进行投影操作

本例只要用到了DataRowExtensions类的Field泛型方法

Field方法用来提供对指定行中的每个列值的强类型访问,其语法格式如下:

 Public static T Filed(this DataRow row,string columnName)

   参数说明:


  1. row:表示当前访问的列名称。
  2. columnName::表示访问的列名称。
  3. 返回值:由columnName指定的DataColumn的值,类型为T

       private void Frm_Main_Load(object sender, EventArgs e)

        {

            string ConnectionString = "Data Source=DESKTOP-M4PUOAS\\SQLEXPRESS;Initial Catalog=db_TomeTwo;User ID=sa;Password=wh1090220084";//声明连接字符串

            using (SqlConnection Conn = new SqlConnection(ConnectionString))//创建数据库连接对象

            {

                string sqlstr = "select top 5* from tb_Bookinfo";//定义查询语句

                SqlDataAdapter da = new SqlDataAdapter(sqlstr, Conn);//创建数据桥接器对象

                DataSet ds = new DataSet();//创建数据对象

                da.Fill(ds, "tb_Bookinfo");//填充数据集

                //查询图书信息表前3行数据的图书名称和作者

                var result = from b in ds.Tables["tb_Bookinfo"].AsEnumerable()

                             select new

                             {

                                 b_name = b.Field("b_name"),

                                 b_author = b.Field("b_author")

                             };

                foreach (var item in result)//遍历输出查询结果

                {

                    richTextBox1.Text +="图书名称:" + item.b_name + "  ******  作者:" + item.b_author+"\n";

                }

            }

        }

三、使用LINQ技术查询DataSet 中的多个表

     private void Frm_Main_Load(object sender, EventArgs e)

        {

            string ConnectionString = "Data Source=DESKTOP-M4PUOAS\\SQLEXPRESS;Initial Catalog=db_TomeTwo;User ID=sa;Password=wh1090220084";//声明连接字符串

            using (SqlConnection Conn = new SqlConnection(ConnectionString))//创建数据库连接对象

            {

                string sqlstr = "select * from tb_Register";//定义查询语句

                SqlDataAdapter da = new SqlDataAdapter(sqlstr, Conn);//创建数据桥接器对象

                DataSet ds = new DataSet();//创建数据对象

                da.Fill(ds, "register");//填充第一个数据表数据到DataSet

                sqlstr = "select * from tb_Sale";//定义查询语句

                da.SelectCommand.CommandText = sqlstr;//指定第二条查询语句

                da.Fill(ds, "sale");//填充第二个数据表数据到DataSet

                //查询有销售记录的药品信息

                var result = from r in ds.Tables["register"].AsEnumerable()

                             join s in ds.Tables["sale"].AsEnumerable()

                             on r.Field("药品编号") equals s.Field("药品编号")

                             select new

                             {

                                 drug_name = r["药品名称"].ToString(),

                                 drug_factory = r["生产厂家"].ToString(),

                                 drug_sale = s["销售额"].ToString()

                             };

                foreach (var item in result)                     //遍历输出查询结果

                {

                    richTextBox1.Text += "药品名称:" + item.drug_name + "******生产厂家:" + item.drug_factory + "******销售额:" + item.drug_sale + "\n";

                }

            }

        }

四、使用LINQ技术对DataSet进行排序操作

private void Frm_Main_Load(object sender, EventArgs e)

        {

            string ConnectionString = "server=WIN-GI7E47AND9R\\LS; database=db_TomeTwo; uid=sa; pwd=";//连接字符串

            using (SqlConnection Conn = new SqlConnection(ConnectionString))//创建数据库连接对象

            {

                string sqlstr = "select * from tb_Bookinfo";//定义查询语句

                SqlDataAdapter da = new SqlDataAdapter(sqlstr, Conn);//创建数据桥接器对象

                DataSet ds = new DataSet();//创建数据对象

                da.Fill(ds, "tb_Bookinfo");//填充数据集

                //按照单价降序排序

                var result = from b in ds.Tables["tb_Bookinfo"].AsEnumerable()

                             orderby b.Field("b_price") descending

                             select new

                             {

                                 b_name = b["b_name"].ToString(),

                                 b_price = b["b_price"].ToString()

                             };

                foreach (var item in result)//遍历输出查询结果

                {

                    richTextBox1.Text+="图书名称:" + item.b_name + "  ******  单价:" + item.b_price+"\n";

                }

            }

        }

五、使用TakeWhile提取满足条件的记录

     private void Frm_Main_Load(object sender, EventArgs e)

        {

            string conStr = "Data Source=WIN-GI7E47AND9R\\LS;Database=db_TomeTwo;UID=sa;Pwd=;";//取连接字符串

            string sql = "select * from EmployeeInfo";//构造sql语句

            DataSet ds = new DataSet();//创建数据集

            using (SqlConnection con = new SqlConnection(conStr))//创建数据连接

            {

                SqlCommand cmd = new SqlCommand(sql, con);//创建Command对象

                SqlDataAdapter sda = new SqlDataAdapter(cmd);//创建DataAdapter对象

                sda.Fill(ds, "EmployeeInfo");//填充数据集

            }

            //从头开始提取生日小于2009-7-1之前的员工信息

            IEnumerable query = ds.Tables["EmployeeInfo"].AsEnumerable().TakeWhile(itm => itm.Field("Birthday")

            dataGridView1.DataSource = query.CopyToDataTable();//设置dataGridView1数据源

        }

六、使用SkipWhile跳过指定条件的记录

   private void Frm_Main_Load(object sender, EventArgs e)

        {

            string conStr = "Data Source=WIN-GI7E47AND9R\\LS;Database=db_TomeTwo;UID=sa;Pwd=;";//取连接字符串

            string sql = "select * from EmployeeInfo";//构造sql语句

            DataSet ds = new DataSet();//创建数据集

            using (SqlConnection con = new SqlConnection(conStr))//创建数据连接

            {

                SqlCommand cmd = new SqlCommand(sql, con);//创建Command对象

                SqlDataAdapter sda = new SqlDataAdapter(cmd);//创建DataAdapter对象

                sda.Fill(ds, "EmployeeInfo");//填充数据集

            }

            //跳过生日小于2009-7-1的员工信息

            IEnumerable query = ds.Tables["EmployeeInfo"].AsEnumerable().SkipWhile(itm => itm.Field("Birthday")

            dataGridView1.DataSource = query.CopyToDataTable();//设置dataGridView1数据源

        }


推荐阅读
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文讨论了在使用sp_msforeachdb执行动态SQL命令时,当发生错误时如何捕获数据库名称。提供了两种解决方案,并介绍了如何正确使用'?'来显示数据库名称。 ... [详细]
  •   《WindowsAzurePlatform系列文章目录》  本文将介绍如何在AzureSQLDatabase创建只读用户。  请先按照笔者之前的文章:AzureSQLDatabas ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 解决.net项目中未注册“microsoft.ACE.oledb.12.0”提供程序的方法
    在开发.net项目中,通过microsoft.ACE.oledb读取excel文件信息时,报错“未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序”。本文提供了解决这个问题的方法,包括错误描述和代码示例。通过注册提供程序和修改连接字符串,可以成功读取excel文件信息。 ... [详细]
  • MySQL多表数据库操作方法及子查询详解
    本文详细介绍了MySQL数据库的多表操作方法,包括增删改和单表查询,同时还解释了子查询的概念和用法。文章通过示例和步骤说明了如何进行数据的插入、删除和更新操作,以及如何执行单表查询和使用聚合函数进行统计。对于需要对MySQL数据库进行操作的读者来说,本文是一个非常实用的参考资料。 ... [详细]
  • OleDbDataAdapter充当DataSet和数据源之间的桥梁,用于检索和保存数据。OleDbDataAdapter通过以下方法提供这个桥接器:使用Fill将数据从数 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • 本文总结和分析了JDK核心源码(2)中lang包下的基础知识,包括常用的对象类型包和异常类型包。在对象类型包中,介绍了Object类、String类、StringBuilder类、StringBuffer类和基本元素的包装类。在异常类型包中,介绍了Throwable类、Error类型和Exception类型。这些基础知识对于理解和使用JDK核心源码具有重要意义。 ... [详细]
  • MySQL修改表结构操作命令总结【MySQL】
    数据库|mysql教程MySQL,修改表结构命令数据库-mysql教程表的结构如下:错误页面源码,ubuntu电脑自动休眠,爬虫造景视频,rapapiphp,廊坊seo开发lzwm ... [详细]
  • SeMITechnologies正在使用矢量搜索引擎Weaviate构建的内容。SeMI的首席执行官兼联合创始人BobvanLuijt说,它是一种独特的AI优先数据库,使用机器学习 ... [详细]
author-avatar
童式恃
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有