LINQ的使用

1,LINQ概念

LINQ可以为c#和Visual Basic提供强大的查询功能,LINQ主要分为三部分,LINQ to ADO.NET、LINQ to Objects、LINQ to XML。
其中LINQ to ADO.NET又分为两部分,LINQ to SQL,LINQ to DataSet。在这里说一下dataset的概念,dataset对象就像存放在内存中的一个小型数据库,它可以包括数据表,数据列,数据行,视图,约束以及关系。通常dataset对象的数据来源于数据库或者XML。
LINQ to SQL只适用于SQL server数据库,目前这种方式已经被淘汰,很少去使用,这里不再介绍。
LINQ to Objects,LINQ还可以像操作数据库中数据那样操作内存中数据,即操作数组和集。
LINQ to XML 提供了修改文档对象模型的内存文档。

2,LINQ to DataSet

使用dataset,就要想数据库中进行数据查询,这里使用的是Oracle数据库,最终目的是通过linq从dataset对象中得到datatable数据,但是我个人感觉这样很多余,因为从dataset中很容易就可以datatable对象,没必要使用这个技术。
     //创建连接字符串
            string str = "Data Source=127.0.0.1/ORCL;User ID=test;PassWord=test;";
            //创建连接对象
            OracleConnection sqlcon;
            //创建数据适配器
            OracleDataAdapter sqlda;
            //创建数据集合
            DataSet myds;
            //根据连接字符串生成连接对象
            sqlcon = new OracleConnection(str);
            //根据查询语句生成数据适配器
            sqlda = new OracleDataAdapter("select * from tb_employee", sqlcon);
            //创建数据集合,并用查到的数据填充
            myds = new DataSet();
            sqlda.Fill(myds, "tb_employee");
            //使用linq从数据集中查询所有数据
            var query = from info in myds.Tables["tb_employee"].AsEnumerable() select info;
 		//创建DataTable对象,把查询到的数据返回给datatable对象
            DataTable myDTable = query.CopyToDataTable();

3,LINQ to Objects

创建一个集合,并对集合中的数据进行刷选,把集合当作一个数据库
   int[] intScores = { 45, 69, 29, 99, 83, 90, 40 };
            var score = from hgscore in intScores
                        where hgscore >= 60
                        orderby hgscore ascending
                        select hgscore;
            foreach (var v in score)
            {
                Console.WriteLine(v.ToString());
            }
            Console.ReadLine();

4,LINQ to XML

可以把xml文件当作一个数据库,可以进行增删改查,这里使用wpf进行效果演示,且只演示了查找和添加的方法,其他的不再演示。
先看前台代码,主要就是进行界面数据的绑定。

    
        
            
                

                    
                    
                    

                
            
        
    
后台代码,主要进行数据的添加和查找并返回给界面显示。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data;
using System.Xml.Linq;


namespace _20180129_linq_to_xml
{
    /// 
    /// MainWindow.xaml 的交互逻辑
    /// 
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            //通过代码想xml文件中添加数据

            //加载配置文件
            XElement xe = XElement.Load("D:\\workspace\\vsworkspace\\测试练习\\2018_01\\20180129_linq_to_xml\\20180129_linq_to_xml\\employee.xml");
            //创建新元素
            XElement es = new XElement("employee", new XElement("name", "tom"), new XElement("sex", "男"), new XElement("age", 32));
           //添加
            xe.Add(es);
            //保存
            xe.Save("D:\\workspace\\vsworkspace\\测试练习\\2018_01\\20180129_linq_to_xml\\20180129_linq_to_xml\\employee.xml");

            //从xml文件中读取数据并显示到datagrid;
            
            //创建一个数据集
            DataSet myds = new DataSet();
            //读取xml文件
            myds.ReadXml("D:\\workspace\\vsworkspace\\测试练习\\2018_01\\20180129_linq_to_xml\\20180129_linq_to_xml\\employee.xml");
            //创建集合,并把数据遍历到集合
            List mylist = new List();
            foreach (DataTable dt in myds.Tables)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    Employee e = new Employee();
                    e.name = dr[0].ToString();
                    e.sex = dr[1].ToString();
                    e.age = int.Parse(dr[2].ToString());                    
                        mylist.Add(e);                  
                }
            }
            //显示数据
            this.test.ItemsSource = mylist;
           
        }
    }
}
最后看一下xml文件,最后一条数据是通过程序添加进去的,前四条是事先创建好的数据。


  
    张三
    
    20
  
  
    李四
    
    20
  
  
    王五
    
    30
  
  
    赵六
    
    26
  
  
    tom
    
    32
  


 

你可能感兴趣的:(wpf,linq,solr,c#)