热门标签 | 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数据源

        }


推荐阅读
  • 本指南介绍了如何在ASP.NET Web应用程序中利用C#和JavaScript实现基于指纹识别的登录系统。通过集成指纹识别技术,用户无需输入传统的登录ID即可完成身份验证,从而提升用户体验和安全性。我们将详细探讨如何配置和部署这一功能,确保系统的稳定性和可靠性。 ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 本文探讨了如何在C#应用程序中通过选择ComboBox项从MySQL数据库中检索数据值。具体介绍了在事件处理方法 `comboBox2_SelectedIndexChanged` 中可能出现的常见错误,并提供了详细的解决方案和优化建议,以确保数据能够正确且高效地从数据库中读取并显示在界面上。此外,还讨论了连接字符串的配置、SQL查询语句的编写以及异常处理的最佳实践,帮助开发者避免常见的陷阱并提高代码的健壮性。 ... [详细]
  • 本文深入探讨了 C# 中 `SqlCommand` 和 `SqlDataAdapter` 的核心差异及其应用场景。`SqlCommand` 主要用于执行单一的 SQL 命令,并通过 `DataReader` 获取结果,具有较高的执行效率,但灵活性较低。相比之下,`SqlDataAdapter` 则适用于复杂的数据操作,通过 `DataSet` 提供了更多的数据处理功能,如数据填充、更新和批量操作,更适合需要频繁数据交互的场景。 ... [详细]
  • 本文介绍了如何在 Spring 3.0.5 中使用 JdbcTemplate 插入数据并获取 MySQL 表中的自增主键。 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • WinMain 函数详解及示例
    本文详细介绍了 WinMain 函数的参数及其用途,并提供了一个具体的示例代码来解析 WinMain 函数的实现。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
  • 在 Java 中,`join()` 方法用于使当前线程暂停,直到指定的线程执行完毕后再继续执行。此外,`join(long millis)` 方法允许当前线程在指定的毫秒数后继续执行。 ... [详细]
  • C# 中 SQLite 报错:在 "\\s\\" 附近出现语法错误,如何解决? ... [详细]
  • 本文是Java并发编程系列的开篇之作,将详细解析Java 1.5及以上版本中提供的并发工具。文章假设读者已经具备同步和易失性关键字的基本知识,重点介绍信号量机制的内部工作原理及其在实际开发中的应用。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
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社区 版权所有