在向大家详细介绍LINQ to SQL Table之前,首先让大家了解下LINQ的4大组件,包括介绍复合式LINQ。
LINQ(Language-Integrated Query,语言集成查询),是随.Net Framework3.5发布的微软的一项新技术。她的查询操作可以通过编程语言自身来传达,而不是像以往的查询那样通过字符串嵌入到应用程序代码中。
LINQ包含4大组件,也就是她的4大功能了:
1、LINQ to Objects 处理对象、集合数据即我们可以在程序中通过类试与,像我们在数据库中通过SQL语句来对Table进 行查询的方式一样,来查询我们的对象或集合;
2、LINQ to SQL 关系数据查询即对数据库的查询基本可以实现和ADO一样的功能,但与其相比操作更加简单,过程更加集中,尤其对数据表或对象进行查询时,可以说有在数据库中操作的感觉;
3、LINQ to DataSet 查询DataSet对象数据 她针对任何形式的数据源都提供了统一的查询方式,统一的语法,所以针对DataSet也是一样,是我们可以非常方便的操作DataSet;
4、LINQ to XML 针对XML形式的数据,LINQ给出了更为简便的查询,使我们操作XML可以像操作Table一样得心应手。
LINQ是一种查询技术,由微软提供,她的***亮点就是,就是将查询操作集成到开发环境中,成为开发语言的一部分,我们可以像写代码一样来创建查询操作或表达式。
学到这脑中突现一个想法,"我是否可以将LINQ to SQL Table与LINQ to XML的XElement join起来?"理论上,在LINQ的设计概念中,这是可行的。
- static void TestCrossLinq()
- {
- NORTHWND db = new NORTHWND
("Data Source=.\\SQLEXPRESS;Initial Catalog=NORTHWND;Integrated Security=True");- XDocument doc = XDocument.Load("XMLFile1.xml");
- var p = from s1 in doc.Elements("tables").Elements("table").Descendants("row")
- join s2 in db.Customers on s1.Element("CUSTOMER_ID").Value equals s2.CustomerID
- where s1.Parent.Attribute("name") != null &&
- s1.Parent.Attribute("name").Value == "Orders"
- select new XElement("Order", s1.Nodes(), new XElement("CompanyName",s2.CompanyName));
- foreach (var item in p)
- {
- foreach (var item3 in item.Elements())
- {
- Console.WriteLine("{0} : {1}", item3.Name, item3.Value);
- Console.WriteLine("--------------------");
- }
- }
- Console.ReadLine();
- }
此程式由XML中读出Order资讯,以其CUSTOMER_ID Element中的资料来与Linq To SQL Table : Customers join,取出CompanyName栏位放入结果集。
【编辑推荐】