在向大家详细介绍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();
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
此程式由XML中读出Order资讯,以其CUSTOMER_ID Element中的资料来与Linq To SQL Table : Customers join,取出CompanyName栏位放入结果集。
【编辑推荐】