C#-从入门到精通-第15章 LINQ数据访问技术

【使用var创建隐型局部变量】
在C#后期版本中声明变量可以不明确指定变量的数据类型,可以使用var关键字声明。
如果使用var声明查询变量,那么必须使用var作为查询变量进行循环访问的foreach语句中迭代变量的类型。

static void Main(string[] args)
{
        string[] strWords = { "MingRi", "XiaoKe", "MRBccd" };//定义字符串数组
        //定义隐型查询表达式
        var ChangeWord =
             from word in strWords
             select new { Upper = word.ToUpper(), Lower = word.ToLower() };
        //循环访问隐型查询表达式
        foreach (var vWord in ChangeWord)
        {
            Console.WriteLine("大写: {0}, 小写: {1}", vWord.Upper, vWord.Lower);//输出转换后的单词
        }
        Console.ReadLine();
}

在这里插入图片描述
【Lambda表达式的使用】
使用Lambda运算符 => ,读作goes to。

//输入参数(如果有)=> 表达式
(input parameters)=> expression
static void Main(string[] args)
        {
            //声明一个数组并初始化
            string[] strLists = new string[] { "明日科技", "C#编程词典", "C#编程词典珍藏版" };
            //使用Lambda表达式查找数组中包含“C#”的字符串
            string[] strList = Array.FindAll(strLists, s => (s.IndexOf("C#") >= 0));
            //使用foreach语句遍历输出
            foreach (string str in strList)
            {
                Console.WriteLine(str);
            }
            Console.ReadLine();
        }

在这里插入图片描述
【LINQ查询表达式】
包含8个基本子句:from、select、group、where、orderby、join、let、into。

static void Main(string[] args)
        {
            //定义一个字符串数组
            string[] strName = new string[] { "明日科技","C#编程词典","C#从基础到项目实战","C#范例手册" };
            //定义LINQ查询表达式,从数组中查找长度小于7的所有项,IEnumerable类的where方法
            IEnumerable<string> selectQuery =
                from Name in strName
                where Name.Length<7
                select Name;
            //执行LINQ查询,并输出结果
            foreach (string str in selectQuery)
            {
                Console.WriteLine(str);
            }
            Console.ReadLine();
        }

在这里插入图片描述
【使用LINQ操作SQL Server数据库】
1.使用LINQ查询SQL Server数据库
首先需要创建LinqToSql类文件。
1)建立目标框架为Framework SDK 4.6的项目
在这里插入图片描述
2)右键项目,添加新项。
在这里插入图片描述
3)在“服务器资源管理器”中连接SQL Server数据库,然后将指定的表拖入设计视图。
在这里插入图片描述
开发一个程序,用combox控件筛选查询条件,textbox输入查询内容,datagridview显示查询的内容。

//首先创建linqtosql类文件,DataClasses1DataContext 
//在类中声明变量
string strCon = "server=.;database=db_test1;uid=sa;pwd=144159";
        DataClasses1DataContext linq;//声明linq连接对象
        private void Form1_Load(object sender, EventArgs e)
        {
            slt();//加载事件中调用slt方法
        }
        /// <summary>
        /// 定义查询方法
        /// </summary>
        private void slt()
        {
            linq = new DataClasses1DataContext(strCon);//创建连接对象
            //如果没有查询关键字,直接显示表内容
            if(textBox1.Text=="" )
            {
                //查询表内容
                var result = from inslt in linq.db_table5
                             select new
                             {
                                 inslt.姓名,
                                 inslt.电话,
                                 inslt.邮政编码,
                                 inslt.住址
                             };
                dataGridView1.DataSource = result;//将result绑定在控件
            }
            else 
            {
                switch(comboBox1.Text)
                {
                    case "姓名":
                        var resultname = from inslt in linq.db_table5
                                         where inslt.姓名 == textBox1.Text
                                         select new
                                         {
                                             inslt.姓名,
                                             inslt.电话,
                                             inslt.邮政编码,
                                             inslt.住址
                                         };
                        dataGridView1.DataSource = resultname;
                        break;
                    case "邮政编码":
                        var resultnum = from inslt in linq.db_table5
                                        where inslt.邮政编码.ToString() == textBox1.Text
                                        select new
                                        {
                                            inslt.姓名,
                                            inslt.电话,
                                            inslt.邮政编码,
                                            inslt.住址
                                        };
                        dataGridView1.DataSource = resultnum;
                        break;
                }
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            slt();//button调用slt方法
        }

在这里插入图片描述
在这里插入图片描述
2.使用LINQ管理SQL Server数据库
1)添加数据
InsertOnSubmit方法:将处于pending insert状态的实体添加到SQL数据表中。
SubmitChanges方法:记录变更的对象,并更新到数据表中。

linq.goods.InsertOnSubmit(good);//调用InsertOnSubmit添加信息
linq.SubmitChanges();//更新到库中

2)修改数据
SubmitChanges方法
3)删除数据
DeleteAllOnSubmit方法和SubmitChanges方法。
在这里插入图片描述
【使用LINQ操作其他数据】
1.使用LINQ操作数组和集合
使用LINQ to Objects技术

static void Main(string[] args)
        {
            int[] intScores = { 45, 68, 80, 90, 75, 76, 32 };//定义int类型的一维数组
            //使用LINQ技术从数组中查找及格范围内的分数
            var score = from hgScroe in intScores
                        where hgScroe >= 60
                        orderby hgScroe ascending//按升序排序
                        select hgScroe;
            Console.WriteLine("及格的分数:");
            foreach (var v in score)//循环访问查询结果并显示
            {
                Console.WriteLine(v.ToString());
            }
            Console.ReadLine();
        }

在这里插入图片描述
2.使用LINQ操作DataSet数据集
使用LINQ to DataSet技术
1)AsEnumerable方法:将DataTable对象转换为EnumerableRowCollection对象
2)CopyToDataTable方法:将IEnumerable对象中的数据赋值到DataTable对象中
3)AsDataView方法:创建并返回支持LINQ的DataView对象。
4)Take方法:用来从序列的开头返回指定数量的连续元素
5)Sum方法:计算数值序列和。

private void Form1_Load(object sender, EventArgs e)
        {
            string strCon = "Data Source=mrwxk\\mrwxk;Database=db_CSharp;Uid=sa;Pwd=;";//定义数据库连接字符串
            SqlConnection sqlcon;//声明SqlConnection对象
            SqlDataAdapter sqlda;//声明SqlDataAdapter对象
            DataSet myds;//声明DataSet数据集对象
            sqlcon = new SqlConnection(strCon);//实例化数据库连接对象
            sqlda = new SqlDataAdapter("select * from tb_Salary", sqlcon);//实例化数据库桥接器对象
            myds = new DataSet();//实例化数据集对象
            sqlda.Fill(myds, "tb_Salary");//填充DataSet数据集
            var query = from salary in myds.Tables["tb_Salary"].AsEnumerable()//使用LINQ从数据集中查询所有数据
                        select salary;
            DataTable myDTable = query.CopyToDataTable<DataRow>();//将查询结果转化为DataTable对象
            dataGridView1.DataSource = myDTable;//显示查询到的数据集中的信息
        }

在这里插入图片描述
3.使用LINQ操作XML
使用LINQ to XML技术
1)XElement类的Load方法:Xelement类表示一个XML元素,Load方法用来从文件中加载Xelement。
2)XElement类的SetAttributeValue方法:用来设置属性的值、添加属性或删除属性
3)XElement类的Add方法:将指定的内容添加为此XContainer的子级。
4)XElement类的ReplaceNodes方法:用来将指定的内容替换此文档或元素的子节点
5)XElement类的Save方法:用来序列化此元素的基础XML树,。可以将输出保存到文件、XMLTextWriter、TextWriter或XmlWriter。
6)XDocument类的Save方法:XDocument表示XML文档,其Save方法用来将此XDocument序列化为文件、TextWriter或XmlWriter。
7)XDeclaration类表示一个XML声明。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个喜欢弹吉他的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值